【问题标题】:Is it possible to scrape a JavaScript-based website using Goutte/PHP?是否可以使用 Goutte/PHP 抓取基于 JavaScript 的网站?
【发布时间】:2015-05-20 23:14:13
【问题描述】:

我想抓取几个网站,这些网站显然是使用 JavaScript 渲染的。具体来说,我想定位这个网站:http://cve.mitre.org/find/index.html

这是我的代码:

$client = new Client();

$crawler = $client->request('GET', 'http://cve.mitre.org/find/index.html');
$form = $crawler->selectButton('Search')->form();
$crawler = $client->submit($form, array('search' => 'Symphony'));

print $crawler->html();

如果我查看源代码,我看不到 HTML,因为这个请求是由 JavaScript 完成的,那么,有人知道如何抓取这类网站吗?

【问题讨论】:

    标签: php html web-crawler goutte


    【解决方案1】:

    这个网站使用了一个懒惰的“谷歌自定义搜索”而不是自己实现,这意味着这个网站附带了各种各样的 JavaScript。

    看起来实际搜索可能是通过传统的表单提交完成的,您只需使用 Google 呈现的元素发布到表单。但是,这可能并不那么容易,因为 Google 可能会检查引荐来源等等,并且无论如何都会阻止它。

    我认为你有几个选择:

    • 使用像 PhantomJS 这样的无头浏览器来运行搜索。您可以尝试直接驱动它,或者使用像 Spiderling 这样的东西。这肯定会起作用,但它比运行像 Goutte 这样的简单浏览器要慢一些,并且需要管理员权限才能在服务器上运行
    • 酌情使用domain:cve.mitre.org 直接抓取 Google 数据
    • 注册 Google 搜索 API 并直接使用它
    • 尝试将所需的表单注入 Goutte 并将表单提交给 Google(在您尝试之前很难知道它是否有效)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 2015-06-24
      • 2021-04-28
      • 1970-01-01
      • 2019-04-23
      相关资源
      最近更新 更多