2

我正在尝试使用 python 和 urllib 来查看某个网页的代码。我已经使用以下代码在其他网页上尝试并成功了:

from urllib import *
url = 
code = urlopen(url).read()
print code

但它什么也没有返回。我的猜测是因为页面有很多 javascripts?该怎么办?

4

1 回答 1

3

动态客户端生成页面 (JavaScript)

您不能单独使用 urllib 来查看客户端(JavaScript)动态呈现的代码。原因是 urllib 仅从服务器获取响应,即标头和正文(实际代码)。因此,我不会执行客户端代码。

但是,您可以使用selenium 之类的东西来远程控制网络浏览器(Chrome 或 Firefox)。这将使您可以废弃页面,即使它使用 javascript 呈现。

以下是使用 selenium 进行抓取的示例:Using python with selenium to scrape dynamic web pages

但这不是你的问题

然而,这个网站的问题似乎是他们不想被刮掉。他们使用某些 http 用户代理标头阻止客户端。

但是,如果您伪造 http 标头,您仍然可以获取代码。像这样使用 urllib2 而不是 urllib:

import urllib2
req = urllib2.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox')  # Add fake client
response = urllib2.urlopen(req)
print response.read()

但是,他们显然不希望您抓取他们的网站,因此您应该考虑这是否是个好主意。

于 2013-06-16T20:25:46.267 回答