python爬取準(zhǔn)備三urllib2模塊

urllib/urllib2默認(rèn)的User-Agent是Python-urllib/2.7,容易被檢查到是爬蟲,所以我們要構(gòu)造一個(gè)請(qǐng)求對(duì)象,要用到request方法。

成都創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)濮陽縣,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

1.查看Header信息

python爬取準(zhǔn)備三 urllib2模塊

2.設(shè)置User-Agent模仿瀏覽器訪問數(shù)據(jù)

Request總共三個(gè)參數(shù),除了必須要有url參數(shù),還有下面兩個(gè):
data(默認(rèn)空):是伴隨 url 提交的數(shù)據(jù)(比如要post的數(shù)據(jù)),同時(shí) HTTP 請(qǐng)求將從 "GET"方式 改為 "POST"方式。
headers(默認(rèn)空):是一個(gè)字典,包含了需要發(fā)送的HTTP報(bào)頭的鍵值對(duì)

# _*_ coding:utf-8 _*_
import urllib2
# User-Agent是爬蟲與反爬蟲的第一步
ua_headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'}
# 通過urllib2.Request()方法構(gòu)造一個(gè)請(qǐng)求對(duì)象
request = urllib2.Request('http://www.baidu.com/',headers=ua_headers)
#向指定的url地址發(fā)送請(qǐng)求,并返回服務(wù)器響應(yīng)的類文件對(duì)象
response = urllib2.urlopen(request)
# 服務(wù)器返回的類文件對(duì)象支持python文件對(duì)象的操作方法
# read()方法就是讀取文件里的全部內(nèi)容,返回字符串
html = response.read()
print html

3.選擇隨機(jī)的Use-Agent

為了防止封IP,先生成一個(gè)user-agent列表,然后從中隨機(jī)選擇一個(gè)

# _*_ coding:utf-8 _*_
import urllib2
import random
url = 'http:/www.baidu.com/'
# 可以試User-Agent列表,也可以是代理列表
ua_list = ["Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
"Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]
# 在User-Agent列表中隨機(jī)選擇一個(gè)User-Agent
user_agent = random.choice(ua_list)
# 構(gòu)造一個(gè)請(qǐng)求
request = urllib2.Request(url)
# add_header()方法添加/修改一個(gè)HTTP報(bào)頭
request.add_header('User-Agent',user_agent)
#get_header()獲取一個(gè)已有的HTTP報(bào)頭的值,注意只能第一個(gè)字母大寫,后面的要小寫
print request.get_header('User-agent')

4.urllib和urllib2的主要區(qū)別

urllib和urllib2都是接受URL請(qǐng)求的相關(guān)模塊,但是提供了不同的功能,最顯著的區(qū)別如下:

(1)urllib僅可以接受URL,不能創(chuàng)建,設(shè)置headers的request類實(shí)例;

(2)但是urllib提供urlencode()方法用來GET查詢字符串的產(chǎn)生,而urllib2則沒有(這是urllib和urllib2經(jīng)常一起使用的主要原因)

(3)編碼工作使用urllib的urlencode()函數(shù),幫我們講key:value這樣的鍵值對(duì)轉(zhuǎn)換成‘key=value’這樣的字符串,解碼工作可以使用urllib的unquote()

函數(shù)

當(dāng)前文章:python爬取準(zhǔn)備三urllib2模塊
網(wǎng)頁URL:http://muchs.cn/article0/johdio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、虛擬主機(jī)、商城網(wǎng)站、用戶體驗(yàn)響應(yīng)式網(wǎng)站、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)