无法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,我做了以下操作:
- 使用 wget 下载页面
- 将 urllib 与 ipython 结合使用并下载了页面
- 使用了 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 函数来确定需要做什么。
这也允许按键和点击。
所以我正在尝试编写一个程序来下载 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,我做了以下操作:
- 使用 wget 下载页面
- 将 urllib 与 ipython 结合使用并下载了页面
- 使用了 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 函数来确定需要做什么。
这也允许按键和点击。