使用python获取包含JavaScript的网页

时间:2013-04-06 18:02:52

标签: python web-applications

我是python的新手。作为编写模块来抓取URL的一部分,我注意到我使用python请求模块获得的内容可能与我在浏览器中加载URL时获得的内容不同。这是因为页面可能包含执行的JS代码,结果是我在浏览器中看到的结果。

我的问题 - 1.我该如何处理这些网站。

  1. python或任何其他模块是否仅限于在服务器端完全呈现静态页面或页面?

  2. 如何处理执行Ajax样式查询以加载页面的页面?

  3. 我假设可能没有这个库,我必须自己做点什么。我希望我不必在我的代码中构建类似webkit的东西:)

    感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以查看模拟浏览器的内容,例如mechanize,或实际驱动浏览器,例如selenium,它应该报告您在javascript运行后看到的html。

这应该是你需要用Selenium做的,但它已经有一段时间了:

from selenium import webdriver

br = WebDriver.Ie() #or .Firefox() or .Chrome() (but not on x64)
br.get(r'http://google.com')
html = br.page_source

对于HTML比较,它至少是不同的:

from requests import get
r = get(r'http://google.com')
print r.content[:100]
>>><!doctype html><html itemscope="itemscope" itemtype="http://schema.org/WebPage"><head><meta itemprop'
print html[:100]
>>><html itemtype="http://schema.org/WebPage" itemscope="itemscope"><head><meta http-equiv="X-UA-Compat

答案 1 :(得分:0)