爬虫入门(四) ——xpath与lxml模块

 

1. xpath介绍

1.1 基本概念

1.2 结点的关系

2. 基本使⽤

2.1 ⼯具安装

2.2 基本用法

2.3 模块的使⽤


1. xpath介绍

1.1 基本概念

  • XPath(XML Path Language)是⼀种XML的查询语⾔,它能在XML树状结构中寻找节点。XPath ⽤于在 XML ⽂档中通过元素和属性进⾏导航
  • xml是⼀种标记语法的⽂本格式,xpath可以⽅便的定位xml中的元素和其中的属性值。lxml是python中的⼀个包,这个包中包含了将html⽂本转成xml对象、和对对象执⾏xpath的功能

1.2 结点的关系

xml_content = '''
<bookstore>   
<book>
<title lang='eng'>Harry Potter</title>   
<author>K.Rowing</author>   
<year>2005</year>
<price>29<price>
</book>
</bookstore>
'''
# <bookstore> 文档节点
# <author>J K.Rowing</author> 元素节点
# lang='eng' 属性节点
  • ⽗节点(Parent): book元素是title、author、year、price元素的⽗
  • ⼦节点(Children):零个一个或者多个,title、author、year、price都是book元素的⼦
  • 同胞节点(Sibling):拥有相同父的节点,title、author、year、price都是同胞

2. 基本使⽤

2.1 ⼯具安装

常用的节点选择工具:

  • chorme用XPath Helper
  • Firefox用XPath Checker

安装参考⽹站:(以chorme为例)

https://blog.csdn.net/qq_31082427/article/details/84987723

因为上面链接中的网盘地址失效,在下面重新给出XPath的下载地址,然后按照上面所给链接中的步骤安装

链接:https://pan.baidu.com/s/15xl8JHPn_9NkYQdp_KSQRA 
       提取码:g4gj 

浏览器右上角出现如图所示X图标代表安装成功

使用时可以在浏览器中用快捷键 ctrl+shift+x:

2.2 基本用法

查找某个特定的节点或者包含某个指定的值的节点:

http://www.budejie.com/网站为例爬取文案:

注意:text()表示将所得数据转换为二进制,这里不加/text()也可以得到同样的信息,但是如果我们在编译器中爬取则必须加text()

当然通过这种方法也可以爬取图片或者其他信息,上面给出的基本用法可以自己去尝试一下,这里就不再一一举例!

2.3 模块的使⽤

在Python中,我们安装lxml库来使⽤XPath 技术

话不多说,直接上代码理解:

from lxml import etree
wb_data = """
        <div>
            <ul>
                 <li class="item-0"><a href="link1.html">first item</a></li>
                 <li class="item-1"><a href="link2.html">second item</a></li>
                 <li class="item-inactive"><a href="link3.html">third item</a></li>
                 <li class="item-1"><a href="link4.html">fourth item</a></li>
                 <li class="item-0"><a href="link5.html">fifth item</a>
             </ul>
         </div>
        """
# 将html/xml字符串转化为element对象
html_element = etree.HTML(wb_data)
# print(html_element) 
#运行结果为:<Element html at 0x21f3a8cffc8>,也就是转化为了16进制的数据

# element对象可以转换为字符串或者是二进制类型的数据
result = etree.tostring(html_element)
r = result.decode()
# print(type(r),r)
# 打印的结果是字符串数据,与第一种是相反的过程,运行结果不再列出可以自行尝试

# 获取li标签下面a标签的href
links = html_element.xpath('//li/a/@href')
# print(links)
#['link1.html', 'link2.html', 'link3.html', 'link4.html', 'link5.html']

# 获取li标签下a标签的内容
result = html_element.xpath('//li/a/text()')
# print(result)
#['first item', 'second item', 'third item', 'fourth item', 'fifth item']

# 把这些数据组合到一个字典当中,例如{'href':'link1.html','title':'first item'}
for link in links:
    d = {}
    d['href'] = link
    # 拿到下标索引值
    # print(links.index(link))
    d['title'] = result[links.index(link)]
    print(d)
    # {'href': 'link1.html', 'title': 60}
    # {'href': 'link2.html', 'title': 104}
    # {'href': 'link3.html', 'title': 116}
    # {'href': 'link4.html', 'title': 109}
    # {'href': 'link5.html', 'title': 108}








 

### 外卖评论数据集的获取 对于外卖评论数据集的获取,通常可以通过多种途径实现。一种常见的方式是从公开可用的数据集中查找适合的研究资源。然而,在提供的参考资料中并没有直接提及具体的外卖评论数据集[^1]。 为了构建或获取这样的数据集,可以考虑通过网络爬虫技术来收集特定平台上的用户评论。这涉及到开发一个能够自动抓取网页内容的应用程序,并将其解析成结构化形式以便后续分析。例如,资料提到的一个系统提供了XPath保存接口和参数调整选项用于信息采集编辑功能,这些工具可以帮助开发者更方便地定义要提取的内容模式并优化爬取过程[^3]。 此外,如果目标是研究某个具体国家或者地区的市场情况,则可能需要关注当地流行的送餐服务平台;而对于跨国比较而言,则应选择具有广泛覆盖范围的服务提供商作为数据源。值得注意的是,在实际操作过程中还需要遵循各网站的服务条款及法律法规的要求,确保合法合规地使用所获得的信息。 针对想要快速入门的朋友来说,也可以尝试访问一些知名的开源项目托管站点(如GitHub),在那里可能会找到由其他研究人员分享的相关领域内的现成数据集合。 ```python import requests from lxml import html def fetch_reviews(url, xpath_expression): response = requests.get(url) tree = html.fromstring(response.content) reviews = tree.xpath(xpath_expression) return reviews ``` 此代码片段展示了如何利用Python库`requests`发送HTTP请求获取页面HTML文档,再借助于`lxml.html`模块中的函数将字符串转换为可查询的对象,最后应用指定的XPath表达式定位到所需的元素列表——即用户的评价文字记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值