美团的项目下载地址(一):Xpath的使用方法
优采云 发布时间: 2021-06-02 01:34美团的项目下载地址(一):Xpath的使用方法
在github上找一个美团项目,可以获取到指定城市的商家信息,分分钟上百条商家信息数据在手,信息包括店铺名称、地理位置、评分、销量,电话(这就是重点)。
好久没更新了。今天写了文章,附上这个很有价值的项目的下载地址。
本文是自己写的xpath笔记。不想看的可以到【k13】底部代码下载地址。
可惜项目是用scrapy写的。其实我是不想用框架的,但是把这个项目改成可以运行的代码,花了一天的时间。我在变更过程中再次熟悉了scrapy。决定学习xpath,然后我会用scrapy写几个爬虫。
除了css,scrapy的选择器比xpath好。现在需要练习xpath的使用。
Xpath 简介
一般来说,使用id、name、class等属性定位节点可以解决大部分解析需求,但有时在以下情况下,使用Xpath更方便:
没有id、名字、班级等
标签的属性或文本特征不重要
标签嵌套层次太复杂
Xpath 是对 XML 路径的介绍。基于 XML 树结构,您可以在整个树中找到目标节点。由于 HTML 文档本身是一个标准的 XML 页面,我们可以使用 XPath 语法来定位页面元素。
Xpath 定位方法
一、Xpath 路径
Xpath 路径示例
定位节点
#查找html下的body下的form下的所有input节点
/html/body/form/input
#查找所有input节点
//input
*通配符选择未知节点**
#查找form节点下的所有节点
//form/*#查找所有节点//*
#查找所有input节点(input至少有爷爷辈亲戚节点)
//*/input
二、 使用索引(这是我自己的理解)
如果过滤元素时有多个节点,但我们想确定唯一的节点。您可以使用类似于列表索引的方式进行精确定位。
案例
#定位 第8个td下的 第2个a节点
//*/td[7]/a[1]
#定位 第8个td下的 第3个span节点
//*/td[7]/span[2]
#定位 最后一个td下的 最后一个a节点
//*/td[last()]/a[last()]
三、使用属性
为了让定位更准确,类似于使用索引,我们需要增加信息量,所以我们也可以使用属性。 @Symbol 是一个属性符号
#定位所有包含name属性的input节点
//input[@name]
#定位含有属性的所有的input节点
//input[@*]
#定位所有value=2的input节点
//input[@value='2']
#使用多个属性定位
//input[@value='2'][@id='3']
或者//input[@value='2' and @id='3']
四、常用功能
除了索引和属性,Xpath还可以使用方便的功能来提升定位的准确性。下面是几个常用的函数:
应用推广
#定位href属性中包含“promote.html”的所有a节点
//a[contains(@href,'promote.html')]
#元素内的文本为“应用推广”的所有a节点
//a[text()='应用推广']
#href属性值是以“/ads”开头的所有a节点
//a[starts-with(@href,'/ads')]
五、Xpath 轴
这部分类似于BeautifulSoup中的sibling、parents和children方法。有时为了实现定位,需要绕道而行,七阿姨和八阿姨的远房亲戚四处走走相识,定位就完成了。
六、美团商户信息
在代码中,我提供了一个高科技的api_key,但是如果你用的太多,对方实际上是无法使用它的。我建议你自己申请一个。
#在高德注册,进入控制台
http://lbs.amap.com/
这是郑州市在几十秒内采集的数据。
提示:
修改高德api_key
在项目中找到设置,将GAODEAPIKEY参数修改为你申请号的api_key。
更改城市
在项目中找到设置,修改CITY_NAME参数为你想要的城市采集
运行主程序采集数据
在项目文件夹中找到main.py并运行,愉快的获取数据并保存到data.csv。
项目下载地址
链接:密码:e7dz