无法Python下载网页源代码:"browser version not supported"

Can't get Python to download webpage source code: "browser version not supported"

所以我正在尝试编写一个程序来下载 Python 2.7.

网页的源代码

代码如下所示:

import urllib2
url = "https://scrap.tf/stranges/47"
req = urllib2.Request(url, headers={'User-Agent' : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/11.04 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30"}) 
con = urllib2.urlopen(req)
data = con.read()
print data

filename = raw_input("Enter filename here: ") + ".txt"
in_data = open(filename, "w")
in_data.write(data)
in_data.close()

然而,当我打开输出文件时,源代码的主要块丢失了,而是有一条消息说这个版本的浏览器不受支持,我应该换一个。

有什么办法可以避免这个问题吗?

查看您列出的 url,我做了以下操作:

  1. 使用 wget 下载页面
  2. 将 urllib 与 ipython 结合使用并下载了页面
  3. 使用了 chrome 并仅保存了 url

所有 3 个都给了我相同的结果文件(相同的大小,相同的内容)。

这可能是因为我没有登录,但我确实看到该网站包含很多 javascript 将呈现页面。

我知道您正在尝试使用 urllib -- 但鉴于上述情况,我会使用 selenium 并将详细说明如何开始使用它。此示例需要 selenium 和 phantomjs,但您可以使用 selenium 和 firefox 执行相同的操作。

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities


browser_agent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"

url = 'https://scrap.tf/stranges/47'

dcap = {}
mydriver = None

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = browser_agent
mydriver = webdriver.PhantomJS(desired_capabilities=dcap)
mydriver.implicitly_wait(30)
mydriver.set_window_size(1366,768)

mydriver.get(url)
title = mydriver.title
print (title)
page = mydriver.page_source
# debugging -- get screen shot to see how we look
mydriver.get_screenshot_as_file('/data/screen/test.png')

这会下载页面并且所有 javascript 都正确呈现,但您需要登录到 Steam,这需要一些互动。

您可以通过检查 Chrome 或 Firefox 中的页面,找到 css 选择器或 xpath,并使用 webdriver find_element 函数来确定需要做什么。

这也允许按键和点击。