使用Python在低级别执行页面的JavaScript?

时间:2016-02-09 16:16:12

标签: python html web-scraping lxml urllib2

使用urllib2抓取this页面时:

url = https://www.geckoboard.com/careers/
response = urllib2.urlopen(url)
content = response.read() 

在源代码中找不到以下元素(作业的链接)(content

enter image description here

查看在浏览器中呈现的完整源代码:

enter image description here

因此看起来FRONT-END ENGINEER元素是由Javascript动态加载的。是否有可能让urllib2(或其他低级库)执行此Javascript而不涉及例如Selenium,BeautifulSoup还是其他?

3 个答案:

答案 0 :(得分:1)

使用一些<?php $x =88; $numbers = array(); while ($x % 2 == 0 && $x <= 99) { $numbers[] = "$x"; $x++; } print_r($numbers); ?> 加载信息。您可以对ajax request使用firebug扩展名,或者谷歌浏览器有自己的工具来获取详细信息。只需在打开网址时点击谷歌浏览器中的mozilla即可。你可以在那里找到完整的细节。

您会在其中找到包含网址f12

的请求

来自上述网址的信息会在该网页中呈现。

答案 1 :(得分:1)

根据我的理解,您正在为多个网站构建通用,并且不想深入了解某个网站的加载方式,以及在引擎盖来构建页面。在这种情况下,真实浏览器是您的朋友 - 通过selenium自动将页面加载到真实浏览器中 - 然后,一旦页面加载,将.page_source传递给{ {1}}(从我看到这是你选择的HTML解析器)进一步解析。

如果您不想显示浏览器或者您没有显示器,则可以无头{ - 3}}或PhantomJS上的常规浏览器。

以下是一个示例代码,可帮助您入门:

lxml.html

您还应该知道,有很多virtual display,您甚至可能不需要单独的HTML解析器。

答案 2 :(得分:0)

我认为你正在寻找这样的事情:https://github.com/scrapinghub/splash