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

使用python读取动态生成的网页,python,web-scraping,Python,Web Scraping,我正在尝试使用python和BeautifulSoup来创建一个网站。我发现在一些网站上,虽然在浏览器上看到的图像链接在源代码中是看不到的。然而,在使用Chrome Inspect或Fiddler时,我们可以看到相应的代码。 我在源代码中看到的是: <div id="cntnt"></div> 但是在Chrome Inspect上,我可以看到在这个div类中生成的一大堆HTML\CSS代码。有没有办法在python中加载生成的内容?我在python中使用常规的url

我正在尝试使用python和BeautifulSoup来创建一个网站。我发现在一些网站上,虽然在浏览器上看到的图像链接在源代码中是看不到的。然而,在使用Chrome Inspect或Fiddler时,我们可以看到相应的代码。 我在源代码中看到的是:

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

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


我不是一名网络开发人员,因此我无法更好地表达这种行为。如果我的问题含糊不清,请随时澄清

网站的内容可能在通过javascript加载后生成,为了通过python获取生成的脚本,请参考您需要javascript引擎来解析和运行页面内的javascript代码。 有很多无头浏览器可以帮助你


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

在选择这些产品时,请记住,以前的一些主要产品现在已被放弃。

请先尝试一下

从技术上讲,数据可能在javascript本身中,所有这些javascript引擎业务都是必需的。(这里有一些很棒的链接!)

但根据经验,我的第一个猜测是JS是通过ajax请求将数据拉入的。如果你能让你的程序模拟它,你可能会得到你所需要的一切,而不需要任何繁琐的解析/执行/抓取

不过这需要一点侦探工作。我建议打开网络流量记录器(如Firefox中的“Web开发者工具栏”),然后访问该网站。将注意力集中在任何/所有XmlHTTPRequests上。您需要的数据应该在这些响应中的某个地方找到,可能在一些JSON文本的中间。


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

网站内容可能在通过javascript加载后生成,因此请参阅此答案->您能提供有问题的URL吗?将有助于诊断