当前位置: 首页 > news >正文

15分钟学 Python 第31天 :Web Scraping

Day 31:Web Scraping

1. Web Scraping 概述

Web Scraping(网页抓取)是一种自动提取网站数据的技术。它常用于从网页中收集信息,对数据进行分析和处理。无论是获取产品价格、市场调研,还是收集新闻信息,Web Scraping都有着广泛的应用。

1.1 Web Scraping 的应用场景
应用场景说明
数据采集定期从网站提取最新数据
媒体内容抓取收集新闻文章、博客文章
价格监控追踪产品价格,竞争对手的动态
市场研究收集消费者评论、产品信息
研究数据收集集合用于科学研究或分析的数据

2. Web Scraping 的工具

进行Web Scraping需要一些工具和库,以下是Python中常用的几个库:

库名作用
Requests处理HTTP请求,获取网站HTML内容
Beautiful Soup解析HTML和XML,提取数据
lxml更高效的HTML/XML解析库
Scrapy完整的Web Scraping框架
Selenium自动化浏览器操作,抓取动态网页内容

3. 使用 Requests 和 Beautiful Soup 进行Web Scraping

3.1 安装所需库

首先,确保您已安装requestsbeautifulsoup4库。可以使用以下命令安装:

pip install requests beautifulsoup4
3.2 基本流程

进行Web Scraping的一般步骤如下:

  1. 使用Requests库获取网页内容。
  2. 使用Beautiful Soup解析网页。
  3. 提取所需的数据。
  4. 保存数据(例如,存入CSV文件、数据库等)。

4. 示例代码

以下是一个简单的Web Scraping示例,抓取一个示例网站的标题和链接。

4.1 示例网站

假设我们要抓取以下网站的数据:

示例网站:http://quotes.toscrape.com/

4.2 示例代码
import requests
from bs4 import BeautifulSoup# 1. 发送HTTP请求并获取网页内容
url = 'http://quotes.toscrape.com/'
response = requests.get(url)# 检查请求是否成功
if response.status_code == 200:# 2. 解析网页内容soup = BeautifulSoup(response.text, 'html.parser')# 3. 提取所需数据quotes = soup.find_all('div', class_='quote')# 存储结果result = []for quote in quotes:text = quote.find('span', class_='text').get_text()author = quote.find('small', class_='author').get_text()result.append({'text': text, 'author': author})# 4. 打印提取的数据for item in result:print(f"Quote: {item['text']} - Author: {item['author']}")
else:print(f"Failed to retrieve the page. Status code: {response.status_code}")
4.3 代码运行流程图

以下是该示例代码的运行流程图:

+-------------------+
| 发送HTTP请求      |
| 获取网页内容     |
+---------+---------+|v
+---------+---------+
| 解析网页内容     |
+---------+---------+|v
+---------+---------+
| 提取所需的数据   |
+---------+---------+|v
+---------+---------+
| 打印或保存数据   |
+-------------------+

5. 处理复杂情况

5.1 动态网页

对于JavaScript生成的动态网页,使用Selenium库更为合适,因为它可以操控浏览器以模拟用户操作。

5.1.1 安装 Selenium
pip install selenium
5.1.2 示例代码
from selenium import webdriver
from selenium.webdriver.common.by import By# 启动浏览器
driver = webdriver.Chrome()  # 确保您已安装Chrome浏览器和对应的ChromeDriver# 访问网站
driver.get('http://quotes.toscrape.com/js/')# 找到元素并提取数据
quotes = driver.find_elements(By.CLASS_NAME, 'quote')for quote in quotes:text = quote.find_element(By.CLASS_NAME, 'text').textauthor = quote.find_element(By.CLASS_NAME, 'author').textprint(f"Quote: {text} - Author: {author}")# 关闭浏览器
driver.quit()

6. 常见问题及最佳实践

  • 避免过于频繁的请求:向同一个网站发送过多请求可能被服务器屏蔽。建议使用time.sleep()函数设置请求间隔。

  • 使用代理:通过使用代理来进行Scraping可以避免IP被封。

  • 遵守robots.txt:在抓取之前查看网站的robots.txt文件,确保您的行为没有违反网站政策。

7. 练习题

  1. 使用Requests和Beautiful Soup抓取另一种类型的网站数据(如电影网站的电影评分和评价)。
  2. 将抓到的数据保存为CSV文件。
  3. 试着使用Selenium抓取具有动态加载内容的网站。

8. 总结

Web Scraping是一项强大的技能,能帮助您从网络中收集和分析数据。通过掌握Requests和Beautiful Soup等工具,您可以高效地获取所需信息。记住在使用Web Scraping时要遵守相关法律法规和网站的规定,维护良好的网络环境。


在这里插入图片描述

怎么样今天的内容还满意吗?再次感谢观众老爷的观看。
最后,祝您早日实现财务自由,还请给个赞,谢谢!

http://www.lryc.cn/news/454540.html

相关文章:

  • 前端编程艺术(2)----CSS
  • 前端的全栈混合之路Meteor篇(二):RPC方法注册及调用
  • 重学SpringBoot3-集成Redis(三)之注解缓存策略设置
  • 【C++11】新特性
  • 【游戏模组】重返德军总部2009高清重置MOD,建模和材质全部重置,并且支持光追效果,游戏画质大提升
  • CGLib动态代理和JDK动态代理Demo、ASM技术尝鲜
  • [C++]使用纯opencv部署yolov11-pose姿态估计onnx模型
  • python you-get下载视频
  • SCUC博客摘录「 储能参与电能市场联合出清:SCUC和SCED模型应用于辅助服务调频市场(IEEE39节点系统)」2024年10月6日
  • Git分支-团队协作以及GitHub操作
  • 力扣刷题 | 两数之和
  • [C#]winform部署官方yolov11-obb旋转框检测的onnx模型
  • 【GC日志和OOM日志分析】JVM GC日志和OOM Dump文件分析
  • 【电路】1.1 实际电路和电路模型
  • Vue - 打包部署
  • spring揭秘25-springmvc03-其他组件(文件上传+拦截器+处理器适配器+异常统一处理)
  • springboot项目中属性的使用优先级;maven编译插件切换环境变量
  • 【Qt】控件概述 (1)—— Widget属性
  • (笔记)第三期书生·浦语大模型实战营(十一卷王场)–书生基础岛第3关---浦语提示词工程实践
  • OpenCV视频I/O(11)视频采集类VideoCapture之设置视频捕获设备的属性函数 set()的使用
  • 数据结构之树(3)
  • 螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下docker学习02(yum源切换及docker安装配置)
  • 强化学习笔记之【Q-learning算法和DQN算法】
  • 面试经验02
  • 分层图 的尝试学习 1.0
  • 第 31 章 javascript 之 XPath
  • JavaScript中的高阶函数
  • Qt6.7开发安卓程序间接连接到MySQL的方法
  • ROW_NUMBER
  • Docker技术