PHP Goutte 网页抓取
PHP Goutte Web Scraping
我想抓取这个:
<a class="pdt_title">
Japan Sun Apple - Fuji
<span class="pdt_Tweight">2 per pack</span>
</a>
这是我的代码:
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://www.fairprice.com.sg/searchterm/apple');
foreach ($crawler->filter('a.pdt_title') as $node) {
print $node->nodeValue."\n";
}
我只想抓取“a”标签内的文本,而不是“span”标签内的文本。
如何只获取“a”标签内的文本?
查看 HTML 标记,您想要的文本节点落入锚点的第一个子节点。由于每个 $node
都是 DOMElement
的一个实例,您可以使用 ->firstChild
(针对文本节点),然后使用 ->nodeValue
:
foreach ($crawler->filter('a.pdt_title') as $node) {
echo $node->firstChild->nodeValue . "\n";
}
另一种选择是使用 xpath,通过 ->filterXpath()
,顺便说一句,它在文档中:
foreach ($crawler->filterXpath('//a[@class="pdt_title"]/text()') as $text) {
echo $text->nodeValue , "\n";
}
相关文档:
https://symfony.com/doc/current/components/dom_crawler.html
xpath 查询只针对带有 class 的锚点,然后是文本。
或者另一个班轮。它 returns 一个数组,提取文本:
$output = $crawler->filterXpath('//a[@class="pdt_title"]/text()')->extract(array('_text'));
相关DOM 文档:
http://php.net/manual/en/class.domelement.php
http://php.net/manual/en/class.domnode.php
我想抓取这个:
<a class="pdt_title">
Japan Sun Apple - Fuji
<span class="pdt_Tweight">2 per pack</span>
</a>
这是我的代码:
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://www.fairprice.com.sg/searchterm/apple');
foreach ($crawler->filter('a.pdt_title') as $node) {
print $node->nodeValue."\n";
}
我只想抓取“a”标签内的文本,而不是“span”标签内的文本。 如何只获取“a”标签内的文本?
查看 HTML 标记,您想要的文本节点落入锚点的第一个子节点。由于每个 $node
都是 DOMElement
的一个实例,您可以使用 ->firstChild
(针对文本节点),然后使用 ->nodeValue
:
foreach ($crawler->filter('a.pdt_title') as $node) {
echo $node->firstChild->nodeValue . "\n";
}
另一种选择是使用 xpath,通过 ->filterXpath()
,顺便说一句,它在文档中:
foreach ($crawler->filterXpath('//a[@class="pdt_title"]/text()') as $text) {
echo $text->nodeValue , "\n";
}
相关文档:
https://symfony.com/doc/current/components/dom_crawler.html
xpath 查询只针对带有 class 的锚点,然后是文本。
或者另一个班轮。它 returns 一个数组,提取文本:
$output = $crawler->filterXpath('//a[@class="pdt_title"]/text()')->extract(array('_text'));
相关DOM 文档:
http://php.net/manual/en/class.domelement.php
http://php.net/manual/en/class.domnode.php