使用 Web Scraping 从网站获取数据

Posted

技术标签:

【中文标题】使用 Web Scraping 从网站获取数据【英文标题】:Get Data From Website With Web Scraping 【发布时间】:2017-03-18 11:16:14 【问题描述】:

我想从数据存储在内部 div 中的网站获取所有图像,我如何获取所有图像。我试过了,但它不能工作。这是我的代码

  <?php
$html = file_get_contents('http://en.vonvon.me/'); //get the html returned from the following url

$pokemon_doc = new DOMDocument();

libxml_use_internal_errors(TRUE); //disable libxml errors

if(!empty($html)) //if any html is actually returned

    $pokemon_doc->loadHTML($html);
    libxml_clear_errors(); //remove errors for yucky html

    $pokemon_xpath = new DOMXPath($pokemon_doc);

    //get all the h2's with an id
    $pokemon_row = $pokemon_xpath->query('div[class=desc ng-binding]');

    if($pokemon_row->length > 0)
        foreach($pokemon_row as $row)
            echo $row->nodeValue . "<br/>";
        
    

?>

【问题讨论】:

那么,有什么问题吗?没有或错误的输出?错误信息?检查错误日志?顺便说一句.. 如果您的代码不起作用,您应该删除 @ 标志,因为它们会抑制错误消息,这在调试时很有帮助。 【参考方案1】:

你不能抓取使用 javascript [Angular] 工作的网站,抓取工具在 JavaScript 执行后看不到 DOM。

但另一方面,如果图像在 dom 中,您可以使用

最好的办法是Simple HTML DOM Parser

$html = file_get_html('http://vonvon.me/');

// Find all images 
foreach($html->find('img') as $element) 
       echo $element->src . '<br>';

【讨论】:

你现在能看一下代码吗,图像在一个内部 div 中,这就是我这样做但它仍然不起作用的原因。 对不起,我没有看到 DOM,在发布答案之前,网站使用的是 Angular JS,你不能废弃它。

以上是关于使用 Web Scraping 从网站获取数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 和 asyncio 进行 Web Scraping

Web Scraping 代码中的 JSON 错误,如何修复?

Web Scraping(网页抓取)基本原理 - 白话篇

将 Web Scraping 的结果存储到数据库中

将数据从一个网站集获取到同一 Web 应用程序共享点 2016 中的另一个网站集

Rap Genius w/ Python 上的 Web Scraping Rap 歌词