2024-05-14 01:18:59 发布
网友
我尝试使用python和urllib来查看某个web页面的代码。 我已经尝试并成功地在其他网页使用代码:
from urllib import * url = code = urlopen(url).read() print code
但它什么也不返回。我猜是因为这个页面有很多javascripts?怎么办?在
不能单独使用urllib查看动态呈现的客户端(JavaScript)代码。原因是urllib只从服务器获取响应,即头和正文(实际代码)。因此,我不会执行客户端代码。在
但是,您可以使用selenium之类的东西来远程控制web浏览器(Chrome或Firefox)。这样,即使页面是用javascript呈现的,也可以将其丢弃。在
这是一个用硒刮擦的例子: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()
但是,他们显然不想让你刮他们的网站,所以你应该考虑这是否是个好主意。在
动态客户端生成的页面(JavaScript)
不能单独使用urllib查看动态呈现的客户端(JavaScript)代码。原因是urllib只从服务器获取响应,即头和正文(实际代码)。因此,我不会执行客户端代码。在
但是,您可以使用selenium之类的东西来远程控制web浏览器(Chrome或Firefox)。这样,即使页面是用javascript呈现的,也可以将其丢弃。在
这是一个用硒刮擦的例子:Using python with selenium to scrape dynamic web pages
但这不是你的问题
然而,这个网站的问题似乎是他们不想被刮掉。它们用特定的http用户代理头阻止客户端。在
但是,如果您伪造http报头,您仍然可以获得代码。使用urllib2而不是urllib,如下所示:
但是,他们显然不想让你刮他们的网站,所以你应该考虑这是否是个好主意。在
相关问题 更多 >
编程相关推荐