我回来了另一个屏幕抓取问题。我使用simple_html_dom.php进行屏幕抓取。我将代码粘贴,响应文本和第二个响应文本。这些响应是simple_html_dom为我提供的结果。你会看到你的反应是好的,但事实并非如此。实际上会有一个链接......我的请求正在进行,你可以手动查看结果(在你的浏览器中)以及simple_html_dom给我的内容。
首先让我们看看代码。
这里se是search_engine,$ key是关键字(比如数字标牌)
function search_company_name( $com_id, $string, $c , $fetched )//----Function: search company name in resultant string
{
foreach($com_id AS $company => $id)
{
if(preg_match('/www\.'.$company.'/', $string)>0)
{
return array('id' => $id,'rank' => $c+1,'fetched' => $fetched+1);
break;
}
}
return NULL;
}
if($se === 'google.com' || $se === 'google.co.in' || $se === 'google.de' || $se === 'google.nl'|| $se === 'google.co.uk')
{
$count = 0; //---- Count the rank ----//
//----LOOP FOR 2 PAGES OF 100 RESULTS----//
for($num_of_results = 0; $num_of_results < 200; $num_of_results += 100)
{
var_dump('http://www.'.$se.'/search?q='.$key.'&start='.$num_of_results.'&num=100');// **check the link urself in ur browser**
$html = file_get_html('http://www.'.$se.'/search?q='.$key.'&start='.$num_of_results.'&num=10');
foreach($html->find('div[id=ires] ol li') as $row)
{
$string = $row->plaintext;
$temp = search_company_name($company_rank, $string, $count, $counter);
if(!is_null($temp))
{
reset($temp);
array_push($finalData, $temp);
foreach($company_rank as $company => $id)
{
if($temp[id] == $id)
{
unset($company_rank[$company]);break;
}
}
$counter++;
}
unset($temp);
if ($tot_company == $counter)
{
break;
}
$count++;
}
if($tot_company == $counter)
{
break;
}
$html->clear();
sleep(3);
}
}
代码是fyn并且适用于。现在粘贴两个响应。
<pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'http://www.google.co.in/search?q=Digital+Signage&start=0&num=10'</font> <i>(length=63)</i>
</pre><pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'Digital signage - Wikipedia, the free encyclopediaDigital signage is a form of electronic display that shows information, advertising and other messages. Digital signs (such as LCD, LED, plasma displays , ...Market and applications - Companies - Content - Technologyen.wikipedia.org/wiki/Digital_signage - Cached - Similar'</font> <i>(length=322)</i>
</pre><pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'Digital Signage | KiosksDynamic, enterprise digital signage software and hardware solutions for simple and complex digital out-of-home (DOOH) installations scaled to any sized ...www.digitalsignage.com/ - Cached - Similar'</font> <i>(length=222)</i>
你可以看到有两个li响应(检查自己)。这些结果是1st li和5li的文本。所以2-4 li hav去了??它正在谷歌的'数字标牌软件'正常工作。 Plz帮助我。我的项目接近尾声,我陷入了这个愚蠢的问题。
第二次回复可能不会让我发帖提问。
答案 0 :(得分:0)
Google会根据您的用户代理返回结构不同的结果。找出您的用户代理here,然后将您的脚本设置为使用相同的。
您的IP地址可以确定显示哪个Google页面,这些页面可能有不同的布局。