目前我正在使用下面显示的代码抓取此网站,但有时会在标题中显示带有 Mixtape 的网页,我想知道如何让它跳过这些并且只抓取显示的页面一般。 (demo)
$html = file_get_html('http://beatshype.com/mp3download/');
foreach($html->find('.entry-title a') as $element)
{
print '<br><br>';
echo $url = ''.$element->href;
$html2 = file_get_html($url);
print '<br>';
$image = $html2->find('meta[property=og:image]',0);
print $image = $image->content;
print '<br>';
$title = $html2->find('.single-title',0);
print $title = $title->plaintext;
print '<br>';
$str = explode ("/", $url);
$date = $html2->find('.single-content a',2);
print $date = $date->href;
}
最佳结果是好的,最终结果是坏的。
答案 0 :(得分:4)
非常简单,检查标题是否包含&#39; mixtape&#39;并转到循环中的下一个项目:
if(stripos($title->plaintext, 'mixtape') !== false) {
continue;
}
在将$title
分配给$title->plaintext
之前放置该代码,或者只使用$ title作为haystack参数。
有些人需要拼写出来..
$html = file_get_html('http://beatshype.com/mp3download/');
foreach($html->find('.entry-title a') as $element)
{
$html2 = file_get_html($url);
$title = $html2->find('.single-title',0);
if(stripos($title, 'mixtape') !== false) continue;
$title = $title->plaintext;
print '<br><br>';
echo $url = ''.$element->href;
print '<br>';
$image = $html2->find('meta[property=og:image]',0);
print $image = $image->content;
print $title.'<br>';
$str = explode ("/", $url);
$date = $html2->find('.single-content a',2);
print $date = $date->href;
}
答案 1 :(得分:2)
首先
print $image = $image->content;
看起来很棒。 它都设置$ image = $ image-&gt;内容并打印出来。
但是不是一个接一个地抓住并打印每一行,而是抓住标题,然后决定是否要获取其他行并打印记录。
$html = file_get_html('http://beatshype.com/mp3download/');
foreach($html->find('.entry-title a') as $element)
{
$url = ''.$element->href;
$html2 = file_get_html($url);
$title = $html2->find('.single-title',0);
if (strpos($title->plaintext,"MIXTAPE")===FALSE) {
$image = $html2->find('meta[property=og:image]',0);
$date = $html2->find('.single-content a',2);
print '<br><br>';
echo $url;
print '<br>';
print $image->content;
print '<br>';
print $title->plaintext;
print '<br>';
print $date->href;
}
}