python爬蟲urllib(2) —帶有請求參數的爬蟲

一、url中請求參數的處理

如果請求中有參數時,我們需要把key-value轉換爲字符串

#url
url="http://www.baidu.com/s?"

#請求參數
params={"wd":"pyhon爬蟲"}
#將請求參數轉換成url編碼格式(字符串)
paramsStr=urllib.parse.urlencode(params)

url=url+paramsStr

二、實例—帶有請求參數的爬蟲

1.步驟

1、請求url(參數格式轉換)
2、opener(代理ip)
3、創建請求對象(不同瀏覽器)
4、發送請求
5、正則清洗數據

2.腳本

import random
import re
import urllib
from urllib import request

#url
url="http://www.baidu.com/s?"

#請求參數
params={"wd":"pyhon爬蟲"}
#將請求參數轉換成url編碼格式(字符串)
paramsStr=urllib.parse.urlencode(params)
url=url+paramsStr

#代理ip
proxylist=[{"http":"120.194.18.90:81"},{"http":"39.137.168.229:80"}]
proxy=random.choice(proxylist)
print(proxy)

#在headers設置不同User-Agent,模擬不同瀏覽器
agent1="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
agent2="Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142 Safari/535.19"
agent3="Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0 "
agent4="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2"
agent5="Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5"
agentlist=[agent1,agent2,agent3,agent4,agent5]
agent=random.choice(agentlist)
print(agent)
headers={"User-Agent":agent}

#創建處理器,用來創建opener
proxyHandler=request.ProxyHandler(proxy)

#創建opener
opener=request.build_opener(proxyHandler)

#創建請求對象
req=request.Request(url,headers=headers)

#發送請求,返回響應
response=opener.open(req).read().decode()

#用正則清洗數據
pat=r'<title>(.*?)</title>'
data=re.findall(pat,response)

#輸出結果
print(data[0])

3.運行結果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章