使用DOMXPATH Php额外的HREF

时间:2017-06-21 16:06:23

标签: php domdocument

<a class="_tr" href="/shopping/product/4889160295225917760/reviews?q=0028400047906&amp;sa=X&amp;ved=0ahUKEwiHjMGfo8_UAhUU5mMKHSK2BYUQvCQIYw">

我试图使用$nodeList = $xpath->query("//a[@href]");

我似乎无法让它工作,我只需要href值,我稍后将从中解析为额外的4889160295225917760

当回应上面的内容时我可以空屏

继承人我得到了什么

<?php
$page = file_get_contents('https://www.google.com/search?q=0028400047906');
$doc = new DOMDocument();
$doc->loadHTML($page);   
$xpath = new DOMXPath($doc);
$test = $xpath->query('//a[@class="_tr"]');
$href = $test->item(0)->getAttribute("href");
echo explode("/", $href)[3];
?>`

我正在做一些测试并将其带回第1步,发现file_get_contents从谷歌搜索结果中检索不到任何内容,它是一个空屏幕

2 个答案:

答案 0 :(得分:0)

这可能有用,我最近用xpath做了很多 - &gt;

$nodelist = $xpath->evaluate("string(/a/@href)", NULL, FALSE);

这适用于xml文件,但不确定它是否适用于您的html。

答案 1 :(得分:0)

如果file_get_contents('https://...')没有检索任何内容,可能是因为运行时配置设置allow_url_fopen禁用了通过URL打开外部文件。您可以使用ini_get('allow_url_fopen')检查其值,该值应返回真值,如"1",如果已启用,或返回值"0"或空字符{{1} },如果它被禁用。

您需要访问系统范围""(或php.ini)才能更改此设置,或与系统管理员联系。

如果无法更改设置,则需要使用cURL之类的内容来检索网址的内容。