ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1284|回复: 11

[分享] PQ网抓XPath路径定位方法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-7-30 11:54 | 显示全部楼层 |阅读模式
本帖最后由 Eric0236 于 2022-7-30 11:58 编辑

经常看到坛友遇到PQ网抓时,问这样的问题,为什么页面上看到的是这个样子,怎么没有内容啊?为什么和PowerBI不一样?
图片.png

其实并不是没有内容,只是他们藏的比较深,需要一点点手动挖掘,以前我是一层一层瞎点点,也需要花很长时间才能找到需要的内容。昨天在解决Saint_Zuo童鞋疑问的时候,找到了一个比较精准的定位方法,分享给大家。

我们以当当网2021年的畅销书榜单举例,http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-year-2021-0-1-1

PQ输入网址后,我们依然看到这样的内容
图片.png

我们首先选择Web视图,看看显示的内容里面有没有我们需要的
图片.png

和浏览器上显示的一致,里面也有榜单内容,每页20本书。

接下来我们就进行下一步。PQ先放一放,来到浏览器中的页面,在第一本书的名称上右键,检查,打开开发者工具(我这里是Firefox浏览器,其他浏览器的进入名称可能会不同)。
图片.png

我们在查看器中可以看到这个书名,同时,鼠标放在这条标签内容上时,网页相应内容也会高亮。
图片.png

接着,我们在这条标签上右键,复制,XPath,我们就复制了书名的XPath路径
图片.png

贴到记事本上就是这个样子的,/html/body/div[3]/div[3]/div[2]/ul/li[1]/div[3]/a

我们把需要提取的内容的路径都找出来
图片.png

发现前面一大段路径都是一样的,那这些东西有什么用,我说,这就是路标,是地图,我们可以按照他的提示一层一层往下挖,让我们回到刚才的PQ中,点击确定后进去看看。

进去后发现,也只有Children下的Table可以点
图片.png

然后是BODY的这个Table,进去之后是这样的,而此时,我们走到了地图的这里
图片.jpg

接下来的div[3],代表着第3个div,也就是他
图片.jpg

继续照着地图走,第3个div,第2个div,ul,到这里,我们看到了整整齐齐的20行,而页面中也就是20本书,每本书的内容都在这个Table里面
图片.jpg

我们停下来看看地图,这个时候走到了这里,而后面的LI代表了每一本书,这里的LI[1]就是第一本,第20本就是LI[20],也可以通过复制其他书的XPath路径来验证一下
图片.png
由于需要提取的内容处在不同的层级,如果继续向下深化,可能需要花很多时间来规整格式。既然有了地图,就可以通过添加列的方式,一项一项提取。比如第1个序号,添加一个自定义列,双击右侧Children,把[Children]列拿进来,确定
图片.png

点击序号下面Table单元格空白处(不是Table文字),可以在下方看到里面的内容
图片.png

根据序号的地图,我们需要的是第一个div,也就是第一个Children,所以这里只需要在公式中直接深化出第一个Children的Table,变成= Table.AddColumn(Children6, "序号", each [Children]{0}[Children]),这里需要注意的是,向下深化的时候,PQ计数是从0开始的,地图显示已经到达终点了,而我们也确实在Table中看到了序号
图片.png

然后只需要把他深化出来就行了,在最后的[Children]后面加上{0}[Text],当然也可以再套一个Text.Remove,顺手把数字后面的点去掉
图片.png

后面,我们就是继续按照地图,把每一列依次添加出来
图片.png

二楼继续

图片.png
图片.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-7-30 12:00 | 显示全部楼层
本帖最后由 Eric0236 于 2022-7-31 09:09 编辑

接一楼

其他几列问题不大,对于作者这里,再和大家一起看一下,因为当我们按照地图添加列之后,有些是空白,再深化就出错了
图片.jpg

我们回过去看下第7行的作者Table,发现刚才深化的第一个Children确实是空,而地图a[1]告诉我们,需要的是第1个a,看来地图没错
图片.png

这里就需要先筛选一下Name,再取第1个Children,深化出Text,其实这里就丢失了国家的信息,这就是PQ不如PBI智能的地方,如果强迫症的话可以自己再想办法加进去
图片.png

最终把需要的列都加上,前面几列删除,更改一下数据类型,就得到了汇总表
图片.jpg

后面大家还可以根据星光大大的方法,把所有25页内容都爬出来汇总在一起。
今天和大家分享了PQ网抓中,通过XPath路径来定位标签的方法,当然每个网页都有各自的特点,具体使用的过程中必定会遇到各种各样的问题。相信只要坚持摸索,都会找到方法。谢谢大家。
文件也给大家附上,有兴趣的可以自行研究


采集网页.zip (21.93 KB, 下载次数: 10)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-8-12 11:30 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-8-12 12:28 | 显示全部楼层

你是IE浏览器吗,我的firefox、chrome、edge都没问题
IE的话网上有个小工具,但我无法验证,你可以试试看
IEXPath.rar (275.16 KB, 下载次数: 3)

TA的精华主题

TA的得分主题

发表于 2022-8-12 15:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-8-12 16:13 | 显示全部楼层
luzwales 发表于 2022-8-12 15:14
不可能找不到吧!

我也不懂网抓 我是准备抓取我的知乎的收藏栏,你可以试试看抓的到不 主要是根本就找不到汉字也就找不到xpath
我随便找一个收藏栏 https://www.zhihu.com/collection/74865138

TA的精华主题

TA的得分主题

发表于 2022-8-12 16:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
luzwales 发表于 2022-8-12 15:14
不可能找不到吧!

我知道了我有个步骤做错了 我直接F12查看 应该是右键到你想要看的元素 这个时候按F12就可以看到了

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-8-12 16:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Learner2022 发表于 2022-8-12 16:13
我也不懂网抓 我是准备抓取我的知乎的收藏栏,你可以试试看抓的到不 主要是根本就找不到汉字也就找不到xp ...

不是每个网页都可以抓的
知乎这个确实直接抓不到,但这个地址上返回的是一页的内容,json格式
https://www.zhihu.com/api/v4/col ... fset=0&limit=20
当然也可以自己把最后limit参数改大,比如100,把所有的都显示出来
由于视频和文字存储在里面的结构不一样,比较复杂
还是要看你需要爬取哪些内容的

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-8-12 17:21 | 显示全部楼层
Eric0236 发表于 2022-8-12 16:58
不是每个网页都可以抓的
知乎这个确实直接抓不到,但这个地址上返回的是一页的内容,json格式
https:// ...

难受啊 PQ抓网页真的是局限太大 还得学Python

TA的精华主题

TA的得分主题

发表于 2022-8-12 17:29 | 显示全部楼层
Eric0236 发表于 2022-8-12 16:58
不是每个网页都可以抓的
知乎这个确实直接抓不到,但这个地址上返回的是一页的内容,json格式
https:// ...

但是PBI可以的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-7 02:36 , Processed in 0.051389 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表