我正在尝试从网站(其中包含值列表及其子列表)中抓取一些数据。但是,子列表是隐藏的,直到我单击它们为止。
我可以使用DomDocument和Xpath轻松获得原始列表项,但不能使用子列表。
我认为子列表是通过Javascript隐藏的,我不知道该如何模拟点击。
如何获取所有列表值?
这里有一张图片供您理解:
网站为:http://www.econodata.com.br/lista-empresas/MINAS-GERAIS/BICAS
当前代码:
$mpd = new DOMDocument();
$mainpage = "http://www.econodata.com.br/lista-empresas/MINAS-GERAIS/BICAS";
$mpd->loadHTML((new simple_html_dom())->load(collect_file($mainpage)));
$mpdXpath = (new DOMXPath($mpd));
foreach($mpdXpath->query('//div/ul/li/span') as $topicNode){
echo $topicNode->textContent;
echo "<br>";
}
预期的输出是所有子列表(字母编号,例如H49,H-492等,而不仅仅是E,F,G,H ...)
答案 0 :(得分:1)
所有元素都具有相同的类parent
<span style="float: left !important;" class="parent">A - AGRICULTURA,....</span>
使用xpath //span[@class="parent"]
但是如果您还想提取URL
foreach($mpdXpath->query('//span[@class="parent"]/..') as $topicNode){
$title = $topicNode->getElementsByTagName('span')[0];
$href = $topicNode->getElementsByTagName('a')[0];
echo $title->textContent;
echo "<br>";
echo "http://...." . $href->getAttribute('href');
echo "<br>";
}