标题 | 详情 |
---|---|
作者简介 | 愚公搬代码 |
头衔 | 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。 |
近期荣誉 | 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳博主等。 |
博客内容 | .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 |
欢迎 | 👍点赞、✍评论、⭐收藏 |
文章目录
- 🚀前言
- 🚀一、请求模块requests高级应用(Reguests-HTML)
- 🔎1.概述
- 🔎2.安装与基础使用
- 🦋2.1 安装命令
- 🦋2.2 发送 GET 请求
- 🦋2.3 发送 POST 请求
- 🔎3.请求头管理
- 🦋3.1 自定义请求头
- 🦋3.2 生成随机请求头
- 🔎4.数据提取方法
- 🦋4.1 CSS 选择器
- 🦋4.2 XPath 选择器
- 🔎5.实战案例:爬取即时新闻
- 🔎6.动态数据加载(JavaScript 渲染)
- 🦋6.1 使用 `render()` 方法
- 🔎7.高级数据提取技巧
- 🦋7.1 使用 `find()` 方法与 `containing` 参数
- 🦋7.2 `search()` 与 `search_all()`
- 🔎8.注意事项
🚀前言
在当今数据驱动的时代,网络爬虫和数据采集变得越来越重要。Python作为一门强大的编程语言,其requests库因其简单易用而广受欢迎,但在处理复杂的网页内容时,单靠requests可能并不足够。这时候,Requests-HTML模块的出现,为我们提供了更为强大的工具,使得抓取和解析网页变得更加高效和便捷。
Requests-HTML是基于requests库构建的,它不仅支持简单的HTTP请求,还具备强大的HTML解析功能,能够轻松处理动态内容和JavaScript渲染的页面。在本期文章中,我们将深入探讨Requests-HTML的各种高级应用,涵盖如何快速抓取网页、解析数据、处理复杂的HTML结构等实用技巧。无论你是数据分析师、爬虫开发者,还是对网页数据提取感兴趣的学习者,掌握Requests-HTML都将为你的项目增添无限可能。
🚀一、请求模块requests高级应用(Reguests-HTML)
🔎1.概述
- 模块关系:Requests-HTML 是 requests 的扩展模块,由同一开发者维护。
- 核心功能:
- 支持 JavaScript 动态渲染
- 集成数据提取(CSS/XPath 选择器)
- 模拟真实浏览器行为
- 包含 requests 所有功能
🔎2.安装与基础使用
🦋2.1 安装命令
pip install requests-html
🦋2.2 发送 GET 请求
from requests_html import HTMLSessionsession = HTMLSession() # 创建会话对象
url = 'http://news.youth.cn/'
r = session.get(url) # 发送 GET 请求
print(r.html.url) # 输出请求地址
🦋2.3 发送 POST 请求
from requests_html import HTMLSessionsession = HTMLSession()
data = {'user':'admin', 'password':123456}
r = session.post('http://httpbin.org/post', data=data)if r.status_code == 200:print(r.text) # 返回结果包含表单数据和浏览器级 User-Agent
🔎3.请求头管理
🦋3.1 自定义请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
r = session.post(url, data=data, headers=headers)
🦋3.2 生成随机请求头
from requests_html import HTMLSession,UserAgent # 导入HTMLSession类session = HTMLSession() # 创建HTML会话对象
ua = UserAgent().random # 创建随机请求头
r = session.get('http://httpbin.org/get',headers = {'user-agent': ua})
if r.status_code == 200: