一、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])