DC学院爬虫学习笔记(四):使用Xpath解析豆瓣短评

简介: 使用Xpath解析豆瓣短评

解析神器Xpath:

1. 什么是Xpath

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。

XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。但是XPath很快的被开发者采用来当作小型查询语言。

2. Xpath解析网页的流程

  • 首先通过Requests库获取网页数据
  • 通过网页解析,得到想要的数据或者新的链接
  • 网页解析可以通过Xpath或者其它解析工具进行,Xpath在是一个非常好用的网页解析工具

image

3. 常用的网页解析

image

  • 正则表达式使用比较困难,学习成本较高
  • BeautifulSoup性能较慢,相对于Xpath较难,在某些特定场景下有用
  • Xpath使用简单,速度快(Xpath是lxml里面的一种),是抓取数据最好的选择

Xpath的使用:

1. 使用Xpath解析网页数据的步骤

  • 从lxml导入etree
  • 解析数据,返回xml结构
  • 使用.xpath()寻找和定位数据
import requests
from lxml import etree

url="https://book.douban.com/subject/27147922/comments/" 

r=requests.get(url).text ##html数据,使用requests获取
##print (r)|

s = etree.HTML(r) #解析html数据

print(s.xpath('//*[@id="comments"]/ul[1]/li[1]/div[2]/p'))#使用.xpath()
[<Element p at 0x1d992e8b808>]

print(s.xpath('//*[@id="comments"]/ul[1]/li[1]/div[2]/p/text()'))## 获取文本,加上   /text()
['最喜欢《姐妹》这一篇:女性之间有一种镜像的关系,通过对方可以看到自己,看到自己深处的处境。']

2. 获取Xpath的方法

第一种方法:从浏览器直接复制

  • 首先在浏览器上定位到需要爬取的数据
  • 右键,点击“检查”,在“Elements”下找到定位到所需数据
  • 右键——Copy——Copy Xpath,即可完成Xpath的复制

image

第二种方法:手写Xpath

  • 获取文本内容用 text()
  • 获取注释用 comment()
  • 获取其它任何属性用@xx,如:

src
value

  • 想要获取某个标签下所有的文本(包括子标签下的文本),使用string
    如”< p>123< a>来获取我啊< /a>< /p>”,这边如果想要得到的文本为”123来获取我啊”,则需要使用string
  • starts-with 匹配字符串前面相等
  • contains 匹配任何位置相等

image

#手写Xpath
import requests
from lxml import etree

url = 'https://book.douban.com/subject/1084336/comments/'
r = requests.get(url).text

s = etree.HTML(r)
print(s.xpath('//div[@class="comment"]/p/text()')[0])
十几岁的时候渴慕着小王子,一天之间可以看四十四次日落。是在多久之后才明白,看四十四次日落的小王子,他有多么难过。

实战环节

使用Xpath爬取豆瓣图书《小王子》短评网页

import requests
from lxml import etree

url = 'https://book.douban.com/subject/1084336/comments/'
r = requests.get(url).text

s = etree.HTML(r)
#从浏览器复制第一条评论的Xpath
print(s.xpath('//*[@id="comments"]/ul/li[1]/div[2]/p/text()'))
#从浏览器复制第二条评论的Xpath
print(s.xpath('//*[@id="comments"]/ul/li[2]/div[2]/p/text()'))
#从浏览器复制第三条评论的Xpath
print(s.xpath('//*[@id="comments"]/ul/li[3]/div[2]/p/text()'))

#掌握规律,删除li[]的括号,获取全部短评
#print(s.xpath('//*[@id="comments"]/ul/li/div[2]/p/text()'))

#手写Xpath获取全部短评
#print(s.xpath('//div[@class="comment"]/p/text()'))
['十几岁的时候渴慕着小王子,一天之间可以看四十四次日落。是在多久之后才明白,看四十四次日落的小王子,他有多么难过。']
['读了好多年,终于读完了,但是实在共鸣不起来,虽然知道那些道理,但真的觉得没什么了不起啊,是我还太幼稚吗?']
['我早该猜到,在她那可笑的伎俩后面是缱绻柔情啊。花朵是如此的天真无邪,可是,我毕竟太年轻了,不知该如何去爱她。']

  • 通过对比可以发现从浏览器复制的Xpath中,“li[]”括号中的数字代表对应的第几条评论,直接删除括号,即可获取全部短评
  • 对于结构清晰的html网页,可以直接手写Xpath,更加简洁且高效
  • 对于结构复杂的html网页,可以通过浏览器复制的方式获取Xpath
目录
相关文章
|
6月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
1106 62
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
6月前
|
数据采集 机器学习/深度学习 人工智能
反爬虫机制深度解析:从基础防御到高级对抗的完整技术实战
本文系统阐述了反爬虫技术的演进与实践,涵盖基础IP限制、User-Agent检测,到验证码、行为分析及AI智能识别等多层防御体系,结合代码实例与架构图,全面解析爬虫攻防博弈,并展望智能化、合规化的发展趋势。
2344 62
反爬虫机制深度解析:从基础防御到高级对抗的完整技术实战
|
8月前
|
数据采集 数据挖掘 测试技术
Go与Python爬虫实战对比:从开发效率到性能瓶颈的深度解析
本文对比了Python与Go在爬虫开发中的特点。Python凭借Scrapy等框架在开发效率和易用性上占优,适合快速开发与中小型项目;而Go凭借高并发和高性能优势,适用于大规模、长期运行的爬虫服务。文章通过代码示例和性能测试,分析了两者在并发能力、错误处理、部署维护等方面的差异,并探讨了未来融合发展的趋势。
880 0
|
10月前
|
数据采集 Java API
深度解析:爬虫技术获取淘宝商品详情并封装为API的全流程应用
本文探讨了如何利用爬虫技术获取淘宝商品详情并封装为API。首先介绍了爬虫的核心原理与工具,包括Python的Requests、BeautifulSoup和Scrapy等库。接着通过实战案例展示了如何分析淘宝商品页面结构、编写爬虫代码以及突破反爬虫策略。随后讲解了如何使用Flask框架将数据封装为API,并部署到服务器供外部访问。最后强调了在开发过程中需遵守法律与道德规范,确保数据使用的合法性和正当性。
|
数据采集 人工智能 监控
40.8K star!让AI帮你读懂整个互联网:Crawl4AI开源爬虫工具深度解析
Crawl4AI 是2025年GitHub上备受瞩目的开源网络爬虫工具,专为AI时代设计。它不仅能抓取网页内容,还能理解页面语义结构,生成适配大语言模型的训练数据格式。上线半年获4万+星标,应用于1200+AI项目。其功能亮点包括智能内容提取引擎、AI就绪数据管道和企业级特性,支持动态页面处理、多语言识别及分布式部署。技术架构基于Python 3.10与Scrapy框架,性能卓越,适用于AI训练数据采集、行业情报监控等场景。相比Scrapy、BeautifulSoup等传统工具,Crawl4AI在动态页面支持、PDF解析和语义分块方面更具优势
4284 0
40.8K star!让AI帮你读懂整个互联网:Crawl4AI开源爬虫工具深度解析
|
数据采集 JSON API
深入解析:使用 Python 爬虫获取淘宝店铺所有商品接口
本文介绍如何使用Python结合淘宝开放平台API获取指定店铺所有商品数据。首先需注册淘宝开放平台账号、创建应用并获取API密钥,申请接口权限。接着,通过构建请求、生成签名、调用接口(如`taobao.items.search`和`taobao.item.get`)及处理响应,实现数据抓取。代码示例展示了分页处理和错误处理方法,并强调了调用频率限制、数据安全等注意事项。此技能对开发者和数据分析师极具价值。
|
6月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。
|
8月前
|
数据采集 存储 Web App开发
Python爬虫库性能与选型实战指南:从需求到落地的全链路解析
本文深入解析Python爬虫库的性能与选型策略,涵盖需求分析、技术评估与实战案例,助你构建高效稳定的数据采集系统。
641 0
|
9月前
|
数据采集 存储 NoSQL
Python爬虫案例:Scrapy+XPath解析当当网网页结构
Python爬虫案例:Scrapy+XPath解析当当网网页结构
|
10月前
|
数据采集 Web App开发 JavaScript
Python爬虫解析动态网页:从渲染到数据提取
Python爬虫解析动态网页:从渲染到数据提取

推荐镜像

更多
  • DNS