简单的html dom只解析包含pdf链接的标题和链接

时间:2012-07-18 01:12:07

标签: php simple-html-dom

我试图解析一些html页面:

<div class="gs_r"><h3 class="gs_rt"><span class="gs_ctc">[BOOK]</span> <a href="http://exampleA.com" onmousedown="return scife_clk(this.href,'','res','1')">titleA</a></h3><div class="gs_ggs gs_fl"><a href="http://exampleApdf.pdf" onmousedown="return scife_clk(this.href,'gga','gga','1')">
<div class="gs_r"><h3 class="gs_rt"><span class="gs_ctc">[BOOK]</span> <a href="http://exampleB.com" onmousedown="return scife_clk(this.href,'','res','1')">titleB</a></h3><div class="gs_ggs gs_fl"><a href="http://exampleB.doc" onmousedown="return scife_clk(this.href,'gga','gga','1')">

从那个html页面,我们可以得到信息:页面链接(http://exampleA.com,http://exampleB.com),标题(titleA,titleB),文档链接(http:// exampleApdf .PDF,HTTP://exampleB.doc) 但是,我只想获得具有pdf链接的文档的信息。所以从这个例子来看,我只想得到:http://exampleA.com,titleA,http://exampleApdf.pdf。我试过,但它给了我空白的结果。他怎么样?谢谢 ! :) 这是代码:

<?php

include 'simple_html_dom.php';
$url = 'http://scholar.google.com/scholar?hl=en&q=data+mining&btnG=&as_sdt=1%2C5&as_sdtp=';
$html = file_get_html($url);
foreach($html->find('div[class=gs_ggs gs_fl]')as $pdfLink){
    if (preg_match('/\.pdf$/i', $pdfLink)) {
       $html2->find('span[class=gs_ctc]');
       echo $html2.$pdfLink;
    }
 }

?>

1 个答案:

答案 0 :(得分:0)

您无法从网址确定将返回哪种资源。

并非每个人都提供带有.pdf扩展名的PDF文件。并非所有Web服务都显示磁盘上文件的文件名。只应使用Content-Type HTTP响应头来确定资源的类型。

您可以通过doing a HEAD request为找到的每个网址有效地获得此效果。