用PHP抓取网页

时间:2014-01-23 04:51:53

标签: php curl web-scraping domdocument fetch

我有一个网页http://dps.kse.com.pk/ticker/inc_ticker_xml.php,我想从表中的自动收录器中提取所有span和anchor标签值。像这个LPCL,11.06等 我试过curl和php dom文件。它不起作用。但是我在google.com和yahoo.com等其他网页上尝试过该脚本,但它不适用于此页面。

$html = file_get_contents($url);

$dom = new DOMDocument;


@$dom->loadHTML($html);

$links = $dom->getElementsByTagName('a');

//var_dump($links);

foreach ($links as $link){

     echo '<a href = "'.$link->getAttribute('href').'">' ;

     echo $link->getAttribute('href'), '<br>';

此代码适用于http://dps.kse.com.pk/ticker/inc_ticker_xml.php页面以外的其他页面。有没有办法废弃这个页面

2 个答案:

答案 0 :(得分:0)

根据我自己的php抓取经验,我发现如果未设置用户代理,某些服务器将拒绝该请求。一旦我在curl设置中设置了用户代理,我的脚本就好了:)

这应该有所帮助: - http://davidwalsh.name/set-user-agent-php-curl-spoof

答案 1 :(得分:0)

此网站需要Cookie并启用javascript。因此,如果您请求该网站,您将在html源代码中获得如下内容。

setCookie('YPF8827340282Jdskjhfiw_928937459182JAX666', '219.109.39.29', 10);
location.href = getHostUri();

您必须从那里解析Cookie值,并需要通过CURL发送,如下所示。

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: YPF8827340282Jdskjhfiw_928937459182JAX666=219.109.39.29"));

之后你会找到一个不同的来源,它会有更多的javascript / ajax调用。如果你需要解析ajax的内容,可以跟踪调用(使用任何网络协议分析器,如wireshark)。

但是,祝这项繁琐的任务好运: - )