gpt4 book ai didi

php - 使用PHP进行网站爬取

转载 作者:行者123 更新时间:2023-12-03 17:03:54 26 4
gpt4 key购买 nike

我有一个php代码,可以提取以下网站中的产品类别:http://www.tradeindia.com/。到目前为止,我仅提取了类别。我如何使它也可以提取旁边的产品编号,因为它没有任何类名?

我的代码:

<?php 
//header('Content-Type: text/html; charset=utf-8');
$grep = new DoMDocument();
@$grep->loadHTMLFile("http://www.tradeindia.com/");
$finder = new DomXPath($grep);
$class = "cate_menu";
$nodes = $finder->query("//*[contains(@class, '$class')]");

$total_L = 0;
foreach ($nodes as $node) {
$span = $node->childNodes;
echo '<br>' . $span->item(0)->nodeValue . ' : ';
}

?>


来自网站的源代码:

<td align="left" style="padding-left:8px;color:blue"><a href=/Seller/Agriculture/ class="cate_menu" >Agriculture</a>(100892)</td>
<td align="left" style="padding-left:8px;color:blue"><a href=/Seller/Apparel-Fashion/ class="cate_menu" >Apparel & Fashion</a>(237902)</td>
<td align="left" style="padding-left:8px;color:blue"><a href=/Seller/Automobile/ class="cate_menu" >Automobile</a>(78614)</td>


我需要括号之间的数字。

最佳答案

我不是xpath专家,但是我要做的是首先使用该指针类别来定位该特定表,然后从那里获取基于该行的那些行,并开始在找到的行上循环。

粗略的例子:

$grep = new DOMDocument();
@$grep->loadHTMLFile("http://www.tradeindia.com/");
$finder = new DOMXpath($grep);

$products = array();
$nodes = $finder->query("
//td[@class='showroom1'][contains(text(), 'CATEGORIES')]
/parent::tr/parent::table/parent::td/parent::tr
/following-sibling::tr
/td[1]/table/tr/td/table/tr
");

if($nodes->length > 0) {
foreach($nodes as $tr) {
if($finder->evaluate('count(./td/a)', $tr) > 0) {
foreach($finder->query('./td/a[@class="cate_menu"]', $tr) as $row) {
$text = $row->nodeValue;
$number = $finder->query('./following-sibling::text()', $row)->item(0)->nodeValue;
$products[] = "$text $number";
}

}
}
}

echo '<pre>';
print_r($products);


Sample Output

关于php - 使用PHP进行网站爬取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26397335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com