PHP 怎么使用 XPath 来采集页面数据内容

之前有说过使用 Python 使用 XPath 去采集页面数据内容,前段时间参与百度内测的一个号主页展现接口,需要文章页面改造的application/ld+json代码

Python 具体的操作可以看一下之前的文章:Python爬虫之XPath语法和lxml库的用法以及方便的 Chrome 网页解析工具:XPath Helper

我想过使用 QueryList 的框架去操作,但是因为他大小也算个框架,有点重,还是直接单文件吧

想到了之前写 Python 爬虫时使用的 XPath,PHP 应该也是可以搞的吧

动手就干,先找到对应的 XPath 规则,如下:

//script[@type='application/ld+json']/text()

script 节点下的 type 属性,拿到它中间的文本,也正好是我们需要的 JSON 数据

本来也是为了提交百度方便,所以直接做到给一个链接,然后代码去请求百度的接口就可以了

具体代码是这样的:

$html = file_get_contents('https://qq52o.me/2530.html');
$dom = new DOMDocument();
// 从一个字符串加载HTML
@$dom->loadHTML($html);
// 使该HTML规范化
$dom->normalize();
// 用DOMXpath加载DOM,用于查询
$xpath = new DOMXPath($dom);
// 获取对应的xpath数据
$hrefs = $xpath->query("//script[@type='application/ld+json']/text()");
for ($i = 0; $i < $hrefs->length; $i++) {
	$href = $hrefs->item($i);
	$json = $href->nodeValue;
}

类库的用法自己可以看一下手册,使用 DOMXPath 的 query 方法,执行给定的 Xpath 规则,就酱紫~

针对百度熊掌号新接口请求封装代码可以看一下 Github:sy-records/xzh-curl

总的来说,简单写一个页面的采集还是很简单的

2 条评论

发表评论

*