从Web抓取信息

时间:2012-07-21 01:04:30

标签: php web-scraping simple-html-dom

如何从这个html页面获取信息(http://linkWeb.com,标题和http://link.pdf)?

<div class="title-download">
    <div id="01divTitle" class="title">
        <h3>
            <a id="01Title" onmousedown="" href="http://linkWeb.com">Titles</a>
            <span id="01LbCitation" class="citation">(<a id="01Citation" href="http://citation.com">Citations</a>)</span></h3>
    </div>
    <div id="01downloadDiv" class="download">
        <a id="01_downloadIcon" title="http://link.pdf" onmousedown="" target=""><img id="ctl01_icon" class="small-icon";" /></a>
    </div>
</div>

我正在尝试,但它只返回标题。我以前不知道simple_tml_dom。请帮我。谢谢你:))

<?php

include 'simple_html_dom.php';
set_time_limit(0);

$url  ='http://libra.msra.cn/Search?query=data%20mining&s=0';
$html = file_get_html($url) or die ('invalid url');
foreach($html->find('div[class=title-download]') as $webLink){
    echo $webLink->plaintext.'<br>';
    echo $webLink->href.'<br>';
}

foreach($html->find('div[class=download]') as $Link2){
    echo $webLink2->href.'<br>';    
}

?>

3 个答案:

答案 0 :(得分:2)

我认为您需要使用class title-download选择div中的元素。至少文档说它使用像jQuery这样的选择器(http://simplehtmldom.sourceforge.net/)

试试这样:

$html = file_get_html($url) or die ('invalid url');
foreach($html->find('.title a') as $webLink){
    echo $webLink->plaintext.'<br>';
    echo $webLink->href.'<br>';
}

foreach($html->find('.download a') as $link){
    echo $link->title.'<br>';    
}

答案 1 :(得分:0)

使用LibXML解析HTML并使用XPath指定所需的元素或元素属性。

答案 2 :(得分:0)

使用以下代码废弃标题和网址:

foreach($html->find('span[class=citation]') as $link){
  $link = $link->prev_sibling();
  echo $link->plaintext.'<br>';
  echo $link->href.'<br>';
}

并使用@zigomir给出的答案废弃课堂下载中的网址:)

foreach($html->find('.download a') as $link){
   echo $link->title.'<br>';    
}