所以我正在尝试制作一个PHP抓取工具(供个人使用)。 代码所做的是为每个ebay拍卖项目显示“找到”,发现它在不到1小时内结束但似乎有问题。爬虫无法获取所有span元素,“剩余时间”元素是a。
下载simple_html_dom.php而不进行编辑。
<?php include_once('simple_html_dom.php');
//url which i want to crawl -contains GET DATA-
$url = 'http://www.ebay.de/sch/Apple-Notebooks/111422/i.html?LH_Auction=1&Produktfamilie=MacBook%7CMacBook%2520Air%7CMacBook%2520Pro%7C%21&LH_ItemCondition=1000%7C1500%7C2500%7C3000&_dcat=111422&rt=nc&_mPrRngCbx=1&_udlo&_udhi=20';
$html = new simple_html_dom();
$html->load_file($url);
foreach($html->find('span') as $part){
echo $part;
//when i echo $part it does display many span elements but not the remaining time ones
$cur_class = $part->class;
//the class attribute of an auction item that ends in less than an hour is equal with "MINUTES timeMs alert60Red"
if($cur_class == 'MINUTES timeMs alert60Red'){
echo 'found';
}
}
?>
任何答案都会有用,提前谢谢
答案 0 :(得分:0)
查看获取的HTML似乎是通过JavaScript设置类alert60Red
。所以你找不到它,因为JavaScript永远不会被执行。
所以只搜索MINUTES timeMs
看起来也很稳定。
<?php
include_once('simple_html_dom.php');
$url = 'http://www.ebay.de/sch/Apple-Notebooks/111422/i.html?LH_Auction=1&Produktfamilie=MacBook%7CMacBook%2520Air%7CMacBook%2520Pro%7C%21&LH_ItemCondition=1000%7C1500%7C2500%7C3000&_dcat=111422&rt=nc&_mPrRngCbx=1&_udlo&_udhi=20';
$html = new simple_html_dom();
$html->load_file($url);
foreach ($html->find('span') as $part) {
$cur_class = $part->class;
if (strpos($cur_class, 'MINUTES timeMs') !== false) {
echo 'found';
}
}
答案 1 :(得分:0)
如果一段代码包含在另一个php文件中,或者html嵌入在php中,则浏览器无法看到它。
所以没有webcrawl api可以检测到它。我认为你最好的办法是找到simple_html_Dom.php的位置,并尝试以某种方式抓取该文件。您甚至可能无法访问它。这很棘手。
如果您的api具有该功能,您还可以尝试通过Id查找?