【问题标题】:Print code from web page with python and urllib使用 python 和 urllib 从网页打印代码
【发布时间】:2013-06-16 20:20:36
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript python urllib


    【解决方案1】:

    动态客户端生成页面 (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()
    

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

    【讨论】:

    • 您有两个选择。 (1)您使用硒并刮擦它,我相信它不会那么难。但效率不高,因为您需要运行浏览器。 (2) 您使用正则表达式来提取 javascript 变量并尝试将其解释为 Python(可能使用 json 模块)。不幸的是,这将为您带来更多的工作
    猜你喜欢
    • 1970-01-01
    • 2016-06-19
    • 2016-10-13
    • 1970-01-01
    • 2012-06-13
    • 2011-11-08
    • 2014-03-20
    • 1970-01-01
    • 2022-07-13
    相关资源
    最近更新 更多