利用代理IP爬取当当网数据并进行数据分析
在数据科学领域,数据爬取是获取所需数据的重要方式之一。特别是在电商平台上,数据的实时更新和丰富性使得其成为分析消费者行为、市场趋势的重要来源。然而,由于电商网站通常会对爬虫进行限流和封禁,我们需要借助代理IP技术来模拟正常用户请求。本文将以当当网为例,介绍如何利用代理IP爬取其商品数据,并进行简单的数据分析。
准备工作
在开始之前,我们需要准备以下工具和库:
- Python环境
- Requests库(用于发送HTTP请求)
- Beautiful Soup库(用于解析HTML)
- Pandas库(用于数据分析)
- 一些免费或付费的代理IP
可以使用以下命令安装所需库:
pip install requests beautifulsoup4 pandas
爬取当当网
接下来,我们编写代码来爬取当当网的商品信息。以下是一个基本的爬虫示例:
import requests
from bs4 import BeautifulSoup
import pandas as pd
import random
# 设置代理列表
proxies = [
'http://111.11.11.11:8888',
'http://222.22.22.22:8888',
# 添加更多代理IP
]
def get_random_proxy():
return {'http': random.choice(proxies)}
def crawl_dangdang(page_number):
url = f'http://search.dangdang.com/?key=Python&page_index={page_number}'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
try:
response = requests.get(url, headers=headers, proxies=get_random_proxy(), timeout=10)
response.raise_for_status() # 检查请求是否成功
response.encoding = response.apparent_encoding
return response.text
except requests.RequestException as e:
print(f"Request failed: {e}")
return None
def parse_html(html):
soup = BeautifulSoup(html, 'html.parser')
products = []
for item in soup.select('.item'):
title = item.select_one('.name a').text.strip()
price = item.select_one('.price').text.strip()
products.append({'title': title, 'price': price})
return products
if __name__ == '__main__':
all_products = []
# 爬取前3页数据
for page in range(1, 4):
html = crawl_dangdang(page)
if html:
products = parse_html(html)
all_products.extend(products)
# 将结果存储到DataFrame
df = pd.DataFrame(all_products)
print(df)
数据分析
在爬取到数据后,我们可以借助Pandas库进行简单的数据分析。以下是一个示例,计算商品的平均价格。
# 数据清洗
df['price'] = df['price'].str.replace('¥', '').str.replace(',', '').astype(float)
# 计算平均价格
average_price = df['price'].mean()
print(f"平均价格: {average_price:.2f} 元")
# 统计商品数量
product_count = df['title'].count()
print(f"商品数量: {product_count}")
注意事项
在进行爬虫行为时,有几项伦理和法律注意事项:
- 遵循robots.txt:查看网站的robots.txt文件,了解允许和禁止爬取的规则。
- 请求频率:合理控制请求频率,以免对目标网站造成负面影响。
- 使用合法的代理IP:确保代理IP的使用符合相关法律法规。
总结
本文展示了如何利用Python进行爬虫,爬取当当网的商品数据,并使用Pandas进行数据分析。通过代理IP,可以有效规避网站的限制,从而获取更大范围的数据。在实际应用中,可以根据需求扩展爬取逻辑和分析方法,以获得更加全面的数据洞察。