找回密码
 立即注册
查看: 459|回复: 0

[其它] Python 利用代理IP爬取当当网数据做数据分析

[复制链接]

279

主题

0

回帖

964

积分

超级版主

积分
964
发表于 2024-7-8 11:44:13 | 显示全部楼层 |阅读模式
本帖最后由 Shaw0xyz 于 2024-7-8 12:15 编辑

1. 引言

爬取网站数据并进行数据分析是数据科学领域中常见的需求。由于网站通常会对频繁的爬取行为进行限制,使用代理IP是解决这一问题的有效方法。本文将详细介绍如何使用Python通过代理IP爬取当当网的数据,并进行简单的数据分析。

2. 准备工作

2.1 安装必要的库

在开始之前,需要安装一些必要的Python库,包括requests、BeautifulSoup和pandas。

可以通过以下命令安装这些库:

  1. pip install requests
  2. pip install beautifulsoup4
  3. pip install pandas
复制代码


2.2 获取代理IP

可以从一些代理IP提供商获取免费的代理IP。需要注意的是,免费代理IP的稳定性和速度可能不佳,可以根据需要选择付费的代理服务。

3. 爬取当当网数据

3.1 设置请求头和代理IP

为了模拟浏览器行为,避免被网站屏蔽,需要设置请求头信息。同时,需要配置代理IP。

  1. headers = {
  2.     'User-Agent': 'Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
  3. }

  4. proxies = {
  5.     'http': 'http://your_proxy_ip:port',
  6.     'https': 'https://your_proxy_ip:port'
  7. }
复制代码


3.2 发送请求并解析页面

使用requests库发送请求,并使用BeautifulSoup解析页面内容。

  1. import requests
  2. from bs4 import BeautifulSoup

  3. url = 'http://category.dangdang.com/cp01.54.00.00.00.00.html'
  4. response = requests.get(url, headers=headers, proxies=proxies)
  5. soup = BeautifulSoup(response.content, 'html.parser')
复制代码


3.3 提取数据

从页面中提取需要的数据,如书名、作者、价格等。

  1. books = []
  2. for item in soup.select('.con .list_aa li'):
  3.     title = item.select('.name')[0].get_text()
  4.     author = item.select('.publisher_info a')[0].get_text()
  5.     price = item.select('.price .price_n')[0].get_text()
  6.     books.append({
  7.         'title': title,
  8.         'author': author,
  9.         'price': price
  10.     })
复制代码


4. 数据分析

4.1 数据清洗

将爬取的数据转换为pandas DataFrame,并进行数据清洗。

  1. import pandas as pd

  2. df = pd.DataFrame(books)

  3. # 清洗价格数据,去掉“¥”符号,并转换为浮点数
  4. df['price'] = df['price'].str.replace('¥', '').astype(float)

  5. 4.2 数据统计与可视化

  6. 进行简单的数据统计与可视化分析。

  7. # 统计作者出现的频率
  8. author_counts = df['author'].value_counts()

  9. # 计算价格的均值和中位数
  10. average_price = df['price'].mean()
  11. median_price = df['price'].median()

  12. # 可视化价格分布
  13. import matplotlib.pyplot as plt

  14. plt.hist(df['price'], bins=20)
  15. plt.title('Price Distribution')
  16. plt.xlabel('Price')
  17. plt.ylabel('Frequency')
  18. plt.show()
复制代码


5. 错误处理与优化

在爬取过程中,可能会遇到各种错误,如请求超时、连接错误等。需要进行适当的错误处理,以提高爬取的稳定性。

  1. try:
  2.     response = requests.get(url, headers=headers, proxies=proxies, timeout=10)
  3.     response.raise_for_status()
  4. except requests.RequestException as e:
  5.     print(f"Error: {e}")
  6.     # 进行适当的处理,如重试、切换代理等
复制代码


6. 结论

通过本文的介绍,读者可以了解如何使用Python通过代理IP爬取当当网的数据,并进行简单的数据分析。希望本文能帮助你更好地掌握网络爬虫和数据分析的技巧。如果有任何问题或建议,欢迎讨论交流。








/ 荔枝学姐de课后专栏 /

Hi!这里是荔枝学姐~

欢迎来到我的课后专栏

自然语言学渣 NLP摆烂姐

热衷于技术写作 IT边角料

AIGC & Coding & linux ...

~互撩~ TG: @Shaw_0xyz
荔枝学姐爱吃荔枝!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-4 13:50 , Processed in 0.057661 second(s), 24 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表