【发布时间】:2018-01-03 00:12:26
【问题描述】:
我想提取 a 标记中的文本,但我不希望 span class 中显示“新列表”的文本。使用 xpath,我怎样才能得到以下文本:
新!使命召唤:二战(Microsoft XBOX ONE DISC 2017)二战工厂 密封!
PHP 抓取器
$document = new DOMDocument( '1.0', 'UTF-8' );
$document->preserveWhiteSpace = false;
$internalErrors = libxml_use_internal_errors( true );
$ebayhtml = file_get_contents( $ebayurl );
$document->loadHTML( $ebayhtml );
libxml_use_internal_errors( $internalErrors );
$xpath = new DOMXpath( $document );
$headers = $xpath->query( '//h3[@class="lvtitle"]/a' );
$ebayx = 0;
foreach ( $headers as $title ) {
if ( $ebayx > 9 ) {
break;
} else {
$header = $title->nodeValue . PHP_EOL;
$header = strlen($header) > 60 ? substr($header,0,60) . "..." : $header;
echo '<pre>';
echo $header;
echo '</pre>';
$ebayx++;
}
}
正在抓取 HTML 代码
<a href="https://www.ebay.com/itm/NEW-CALL-OF-DUTY-WWII-Microsoft-XBOX-ONE-DISC-2017-WW2-Factory-Sealed/173060343645?epid=237222746&hash=item284b33475d:g:Xf4AAOSwI8laCc~I" class="vip" title="Click this link to access NEW! CALL OF DUTY: WWII (Microsoft XBOX ONE DISC 2017) WW2 Factory Sealed!"><span class="newly">New listing</span>
NEW! CALL OF DUTY: WWII (Microsoft XBOX ONE DISC 2017) WW2 Factory Sealed!</a>
【问题讨论】:
-
eBay 不允许抓取
-
因为它是非法的或者它不起作用?
-
违反 Ebays 服务条款。
-
只有在流量具有破坏性的情况下,如果以用户身份登录购买或出售物品,其他任何事情都只是违规行为。除非发生计算机滥用,否则仅访问不是人类或机器人强制执行的活动。作为访客,您不能违反从未同意的合同。
-
好吧,当然欢迎你忽略别人的意愿。
标签: php xpath web-scraping