php抓取网页标签(常见爬取网页时,提取数据的方法有xpath,正则提取)
优采云 发布时间: 2022-02-05 16:32php抓取网页标签(常见爬取网页时,提取数据的方法有xpath,正则提取)
2021-08-14 抓取网页时,提取数据的方法有xpath和正则提取。对于json数据,使用函数jsonpath提取,scrapy中使用css提取。标题在这么多提取方法中,这次我们使用xpath来模拟我们所面临的数据,用于一般和特殊的数据提取。
网址:
文章使用这个 网站 从 xpath 中提取数据。
一、对于简单的数据,可以直接查看网页的源码,然后复制其xpath的路径(提示:7、8%的网页可以通过这种方式直接提取)
第一步:鼠标右击,查看网页,也可以使用快捷键F12
2.第二步:
点击你要的信息:点击后,下面会自动跳转到对应的位置,然后复制路径。
这种方法非常快。准确率一般,毕竟自己写最准确。
墙破解推荐一个谷歌插件,xpath-helper插件可以实时查看自己的xpath路径对应的信息。
二、如有特殊要求,xpath会响应
还是这个网站,我现在在想,从后面的所有类别爬取,我不要所有这个模块
这是使用xpath中的position(位置)方法,position处理这种情况比较快
/html/body/div/div[1]/div[6]/div/div[3]/div[1]/div[2]/a[1]/text()
这个 xpath 提取的就是全部
/html/body/div/div[1]/div[6]/div/div[3]/div[1]/div[2]/a[position()>1]/text()
此 xpath 提取所有后续模块
使用方法:顾名思义,位置(position),我们只需要替换递归标签中的这个字段就可以从选中的行中提取数据
翻页并提取页面的URL
我们可以发现网页的下一页的位置正在发生变化。如果要定位,不能使用常规方法,因为每一页的位置都不一样。这就是我们要使用的 last()
/html/body/div/div[1]/div[8]/div/a[last()-1]/@href
像这样,很容易理解,差不多就是递归标签内修改position,last()代表最后一个标签,last()-1,代表倒数第二个标签,其余同理
或者翻转标签,也可以使用 content() 方法进行定位:
/html/body/div/div[1]/div[8]/div/a[contains(string(.),'next')]/@href
还有一些其他的方法,下次继续,有什么问题可以留言交流!!!
分类:
技术要点:
相关文章: