使用python读取动态生成的网页

时间:2012-12-19 20:23:34

标签: python web-scraping

我正在尝试使用python和美丽的汤刮一个网站。我在某些网站遇到过,虽然在浏览器上看到的图片链接在源代码中无法看到。但是,在使用Chrome Inspect或Fiddler时,我们可以看到相应的代码。 我在源代码中看到的是:

<div id="cntnt"></div>

但是在Chrome Inspect上,我可以看到在这个div类中生成的一大堆HTML \ CSS代码。有没有办法在python中加载生成的内容?我在python中使用常规urllib,我可以获得源但没有生成的部分。

我不是网络开发者,因此我无法用更好的术语表达这种行为。如果我的问题看起来模糊不清,请随时澄清一下!

4 个答案:

答案 0 :(得分:14)

答案 1 :(得分:5)

网站的内容可能是在通过javascript加载后生成的,为了通过python获取生成的脚本,请参阅this answer

答案 2 :(得分:0)

常规刮刀只获取HTML文档。要获取JavaScript逻辑生成的任何内容,您需要一个Headless browser来生成DOM,加载和运行脚本就像常规浏览器一样。维基百科的文章和网络上的其他一些页面列出了这些及其功能。

请注意,选择之前的一些主要产品现在已被放弃。

答案 3 :(得分:0)

首先尝试!

也许从技术上讲数据可以在javascript本身中,并且需要所有这些javascript引擎业务。 (这里有一些很棒的链接!)

但是根据经验,我的第一个猜测是JS是通过ajax请求提取数据的。如果您可以让您的程序进行模拟,那么您可能会得到所需的一切,而无需进行任何繁琐的解析/执行/抓取工作!

这将需要一些侦探工作。建议您打开网络流量记录器(例如Firefox中的“ Web Developer Toolbar”),然后访问该站点。将注意力集中在任何/所有XmlHTTPRequest上。您需要的数据应该在这些响应之一中的某个位置,可能在某些JSON文本的中间。

现在,看看是否可以重新创建该请求并直接获取数据。 (注意:您可能必须设置请求的用户代理,以便服务器认为您是“真正的” Web浏览器。)