手刃一个善意的小爬虫(三),使用xpath解析,包括常用处理技巧
内容提要
本文介绍了使用lxml库进行xpath入门练习的方法,包括找到ul标签中的所有文本内容、通过索引找到ul标签中的百度、找到ol标签下href属性为dapao的文本值、找到ol标签下a标签中所有的文本值、找到ol标签下a标签中所有href属性的值等。同时还介绍了etree.parse和etree.HTML的区别,并给出了爬取猪八戒网站信息和处理cookie登录小说网、处理防盗链问题爬取梨视频下载地址的案例实战。最后总结了使用xpath进行定位的基础知识。
延伸解读
解析器选择:etree.parse 与 etree.HTML 的适用场景
文章明确区分了 etree.parse 和 etree.HTML 的用途。etree.parse 用于解析本地标准网页文件,直接按文档结构处理;而 etree.HTML 则用于处理服务器返回的、可能不规范的 HTML 数据,能将其转换为标准格式。在实际爬虫中,从网络获取的响应内容通常用 etree.HTML 解析,本地测试文件则可用 etree.parse。理解这一区别有助于避免解析错误。
XPath 定位的实用技巧:索引与相对路径
文章通过练习展示了 XPath 的索引从 1 开始,以及使用 './' 进行相对路径查找的方法。在遍历多个相似元素(如 li 列表)时,先定位父级,再在每个父级内使用相对路径提取子元素,能有效避免全局搜索的混乱。此外,浏览器检查元素时直接复制 XPath 也是一种快速获取路径的辅助手段,但需注意其可能不够简洁或稳定。
实战中的常见问题:Cookie 登录与防盗链处理
文章以 17k 小说网和梨视频为例,说明了两个典型问题。对于需要登录的网站,可使用 requests.session 自动保持 Cookie,或手动将 Cookie 放入请求头。对于防盗链,梨视频通过校验 Referer 来限制访问,需在请求头中添加原始 URL 作为 Referer。同时,视频真实地址中的 systemTime 需替换为 cont-{contId},这要求从原始 URL 中提取 contId 并修整 srcUrl。这些步骤体现了处理动态数据和反爬机制的基本思路。
Q&A
如何安装lxml库以使用xpath?
使用命令pip install lxml进行安装。
如何使用xpath找到ul标签中的所有文本内容?
可以使用tree.xpath('/html/body/ul/li/a/text()')来获取ul标签中的所有文本。
etree.parse和etree.HTML有什么区别?
etree.parse用于解析标准网页格式,etree.HTML用于处理不规范的html数据。
如何处理cookie以登录小说网并爬取数据?
需要先登录获取cookie,然后使用session请求书架的内容。
如何爬取梨视频的下载地址?
需要获取contID,修整srcUrl,然后下载视频。
使用xpath进行定位有什么重要性?
掌握xpath定位有助于在爬虫解析时更有效地提取数据。