在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ 自定義函數(shù)參數(shù)問題以及字符串報(bào)錯(cuò)“未知網(wǎng)址類型”

自定義函數(shù)參數(shù)問題以及字符串報(bào)錯(cuò)“未知網(wǎng)址類型”

import urllib2
import random
header_all = [
    "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
    "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
] 

def save_content(url, headers):
 ran_header = random.choice(headers)
 html = urllib2.Request(url)
 html.add_header("User-Agent", ran_header)
 html.add_header("GET", url)
 html.add_header("Referer", "http://www.123.com.cn/")
 content = urllib2.urlopen(ran_header).read()
 return content
url = "http://www.123.com.cn"
print save_content(url, header_all)#這里報(bào)錯(cuò),未知的網(wǎng)址類型??墒俏疫@里第一傳的是url,第二個(gè)傳的是UA參數(shù),為啥會(huì)報(bào)未知網(wǎng)址類型呢?

新手,請(qǐng)指點(diǎn)。

回答
編輯回答
紓惘

https://docs.python.org/2/lib...
urllib2.urlopen(url[, data[, timeout[, cafile[, capath[, cadefault[, context]]]]])
urllib2.urlopen 的第一個(gè)參數(shù)是 url 或者 request,不是這里的 header (user agent)。

所以可以作如下修改:

content = urllib2.urlopen(html).read()

另外提幾個(gè)代碼風(fēng)格的幾個(gè)問題:

  1. 變量 header_all 應(yīng)該叫 user_agents;
  2. 變量 ran_header 應(yīng)該叫 user_agent 或者簡(jiǎn)稱 ua;
  3. 變量 html 應(yīng)該叫 request 或者簡(jiǎn)稱 req;
  4. html.add_header("GET", url) 這段代碼沒有意義,url 不是 header 的一部分;
  5. (我的個(gè)人偏好,可忽略)單引號(hào)比雙引號(hào)容易輸入。
2017年5月4日 09:24