python爬蟲添加請求頭和請求主體


添加頭部信息有兩種方法

1.通過添加urllib.request.Request中的headers參數

 1 #先把要用到的信息放到一個字典中
 2 headers = {}
 3 headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) .......'
 4 headers['......'] = '........'
 5 
 6 #提交的主體信息,可以使用windows的瀏覽器找出來,以字典的形式寫出來
 7 data = {}
 8 data['eng'] = '0'  #1:英->漢  0:漢->英
 9 data['validate'] = ''
10 data['ignore_trans'] = '0'
11 
12 #將攜帶的數據轉換成請求方法的對應類型
13 reqdata = urllib.parse.urlencode(data).encode('utf-8')
14 
15 #生成一個請求報文,這里的url和data需要提前給定 
16 req = urllib.request.Request(url,reqdata,headers) 
17 
18 #使用這個報文去請求網頁,這時請求的報文中就帶有瀏覽器標識了
19 html = urllib.request.urlopen(req).read()

2.通過urllib.request.Request的add_header方法添加

1 #生成請求報文,這里先不加入header參數
2 req = urllib.request.Request(url,reqdata)
3 
4 #通過返回的請求對象添加header頭,這里是個元祖,不是字典
5 req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64)')
6 
7 #這時再去請求就是帶有瀏覽器標識的報文了
8 html = urllib.request.urlopen(req).read()

 

360翻譯示例代碼: 

 1 import urllib.request
 2 import chardet
 3 import urllib.parse
 4 import json
 5 
 6 #請求url路徑,這個是360翻譯
 7 url = 'https://fanyi.so.com/index/search?eng=0&validate=&ignore_trans=0&query=%E5%8E%86%E5%8F%B2%0A'
 8 #這里只寫了個瀏覽器標識
 9 headers = {}
10 headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
11 #提交的請求主體信息
12 data = {}
13 data['eng'] = '0'  #1:英->漢  0:漢->英
14 data['validate'] = ''
15 data['ignore_trans'] = '0'
16 while True:
17     str = input("請輸出要翻譯的中文(輸入q退出):") #要查詢的內容
18     if str == 'q':
19         break
20     else:
21         data['query'] = str
22 
23 
24     #將攜帶的數據轉換成請求方法的對應類型
25     reqdata = urllib.parse.urlencode(data).encode('utf-8')
26     #把url、data、header封裝成一個請求
27     req = urllib.request.Request(url,reqdata,headers)
28     #提交請求
29     response = urllib.request.urlopen(req)
30     #獲取返回頁面內容
31     html = response.read()
32     #將返回的頁面進行解碼,可以使用chardet.detect(html)查看頁面編碼
33     # print(type(html)) 可以這樣打印,判斷出頁面的類型是什么,好進行下一步的轉碼
34     # print(isinstance(html,bytes))
35     html = html.decode('ascii')
36     #html為json格式,轉換成字典類型
37     html = json.loads(html)
38     #提取出翻譯的字段
39     translation = html['data']['fanyi']
40 
41     print(translation)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM