如何使用php抓取网站


how to scraping a site using php

我正在使用以下代码获取网站的内容

function get_content($url){
    $content = @file_get_contents($url);
    if( empty($content) ){
      $content = get_url_contents($url);
    }
    return $content;
}
function get_url_contents($url){
    $crl = curl_init();
    $timeout = 90;
    curl_setopt ($crl, CURLOPT_URL,$url);
    curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
    $ret = curl_exec($crl);
    curl_close($crl);
    return $ret;
}
$url = "http://www.site.com";
$html = get_content($url);
echo $html;

一切都很好,但我需要获得例如我所有的div元素或页面的标题或我所有的图像。

我该怎么做?

感谢

使用HTML解析库。虽然它们中有很多存在,但我个人使用过SimpleHTMLDom,并有过很好的体验。它使用JQuery样式的选择器,使其易于学习。

一些代码示例:

获取页面标题:

$html = str_get_html($html);
$title = $html->find('title',0);
echo $title->plaintext;

对于所有div元素:

$html = str_get_html($html);
$divs = $html->find('div');
foreach($divs as $div) {
   // do something;
}

您可以使用DOMDocument

例如:

$dom = new DOMDocument;
$dom->loadHTML($html);
$divs = $dom->getElementsByTagName('div');
foreach ($divs as $div) {
    echo $div->nodeValue. PHP_EOL;
}