天天看點

python爬蟲3之http get請求模拟

如果要進行用戶端和服務端的消息傳遞,我們可以使用Http協定請求進行。

GET請求會通過URL網址傳遞資訊比如在百度上查找一個關鍵字hello,使用爬蟲自動實作這個過程。

思路如下:

(1)建構對應的url位址,該URL位址包含GET請求的字段名和字段内容等資訊,并且URl滿足get請求的格式,即“http://網址? 字段名1=字段内容&字段名2=字段内容2“

(2)以對應的URL為參數,建構Request對象。

(3)通過urlopen()打開建構的request對象。

(4)按需求進行之後的操作。

import urllib.request
keywd="hello"
url="http://www.baidu.com/?wd="+keywd
req=urllib.request.Request(url)
data=urllib.request.urlopen(req).read
           

但是當檢索的内容是中文時,會出現編碼錯誤:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 9-10: ordinal not in range(128)
           

此時可以對代碼進行修改:

import urllib.request
keywd="天才"
key_code=urllib.request.quote(keywd)
url="http://www.baidu.com/?wd="+key_code
req=urllib.request.Request(url)
data=urllib.request.urlopen(req).read