我是否需要无头浏览器来搜索CSS属性

时间:2017-06-18 00:14:12

标签: jquery css symfony web-scraping headless-browser

我的目标是从网页上提取特定的CSS属性值。我使用Guzzle和Symfony的css选择器设置了一个刮刀。但是,我已经意识到css选择器与jQuery的工作方式不同,据我所知,没有.attr()方法。

我认为我需要使用无头浏览器,mink,无头chrome,phantom.js才能呈现页面,然后找到属性吗?

2 个答案:

答案 0 :(得分:1)

Mink是一个很好的选择,因为它提供的api和它允许与几个驱动程序(goutte,gecko / firefox ...)交互的能力。

如果生成的css没有被javascript修改,mink + goutte可能是最好的选择,但是如果通过javascript以某种方式修改css,则mink + selenium配置可能是最好的(或者mink + zombie)。请记住,第二种方法比“goutte”更难设置和慢。

访问dom的方式与jQuery不同,但选择器大致相同,实际上mink为您提供了4种类型的选择器。

您可以使用“xpath”选择器执行几乎所有操作。我还建议考虑使用“css”+ NodeElement方法,因为它更简单,并且在大多数情况下都有帮助。

这里有一个基于维基百科和2种方法的例子:

想象一下,你去wikiperia.org,你想保留英文输入链接:

$xPath = '//a[@id="js-link-box-en"]/@href';
$nodeElement = $this->getSession()->getPage()->find('xpath', $xPath);
$theHrefValue = $nodeElement->getText();

Alternativelly:

 $nodeElement = $this->getSession()->getPage()->find('css', '#js-link-box-en')
 $theHrefValue = $nodeElement->getAttribute('href');

我希望在做出决定时能帮助你:)

答案 1 :(得分:1)

PhantomJS(http://phantomjs.org/)是一个很好的我用于单元测试。

Chrome刚刚在v59中发布了在无头模式下运行浏览器的功能。但它确实适用于Windows。

  

无头Chrome已在Chrome 59中发布。它是运行Chrome的一种方式   浏览器在无头环境中。基本上,没有运行Chrome   铬!它带来了所有现代网络平台功能   Chromium和Blink渲染引擎到命令行。

     

为什么这有用?

     

无头浏览器是自动测试和服务器的绝佳工具   您不需要可见UI shell的环境。例如,你   可能想对真实的网页运行一些测试,创建一个PDF   它,或者只是检查浏览器如何呈现URL。

     

注意:Chrome 59中的Mac和Linux上提供无头模式。   Chrome 60支持Windows支持。要查看的是什么版本的   你有Chrome,打开chrome:// version。

您可以在此处找到更多信息:https://developers.google.com/web/updates/2017/04/headless-chrome