先看get模式下:
url="http://www.douban.com"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36"
}
req=urllib.request.Request(url=url,headers=headers) #post模式下的数据封装
response=urllib.request.urlopen(req) #封装完了 进行数据传输,response来放置结果
print(response.read().decode("utf-8"))
#是这样做 但是我被拉黑了
url 放置目标解析网址
headers 爬虫时的浏览器伪装
req=urllib.request.Request(url=url,headers=headers) urllib下解析get网页 放入url和headers
response=urllib.request.urlopen(req) 解析封装后 urlopen发送并response接受数据
最后打印记得用read模式并进行decode编码
再看POST模式下
url="http://httpbin.org/post"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36"
}
data = bytes(urllib.parse.urlencode({'name':'eric'}),encoding="utf-8") #post模式必须做数据封装前的data二进制转换
req=urllib.request.Request(url=url,data=data,headers=headers,method="POST") #post模式下的数据封装
response=urllib.request.urlopen(req) #封装完了 进行数据传输,response来放置结果
print(response.read().decode("utf-8"))
post模式更复杂一些
多了一个data的二进制转换,其中涉及encoding 相当于封装前进行data的处理 bytes进行二进制转换
其他都一样