Python-爬蟲-HTTP協議請求之GET請求


我們在百度搜索時,輸入關鍵詞,比如“hello”,URL發生變化,如下:

https://www.baidu.com/s?wd=hello&rsv_spt=1&rsv_iqid=0xfc1746f10002f457&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=6&rsv_sug1=6&rsv_sug7=100&rsv_t=bfb1srfxPDC%2B3vVQ8VIkfcg4Yus9EaBJZmHlVn5upgnCTMv99iZYH9iJSX3nVzXYdpeC

如果只截取前一部分“https://www.baidu.com/s?wd=hello”,搜索效果是相同的,wd=后面跟的就是我們要搜索的關鍵詞。

因此,我們可以通過這個構造GET請求。

import urllib.request

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

print(data)
with open('1.html', 'wb') as f:
    f.write(data)

也可以用另一種簡化一點的方法,原理是相同的:

from urllib.request import urlopen

keywd = 'hello'
url = 'http://www.baidu.com/s?wd=' + keywd
html = urlopen(url).read()

with open('1.html', 'wb') as f:
    f.write(html)

這樣保存到1.html的,就是我們想要的搜索結果網頁。

但是對於漢字搜索,上面的程序就是報錯,這是由於編碼問題造成的。對於這個問題,可以利用urllib.parse中的quote解決,具體如下:

from urllib.request import urlopen
from urllib.parse import quote

keywd = quote('你好')

url = 'http://www.baidu.com/s?wd=' + keywd
html = urlopen(url).read()

with open('1.html', 'wb') as f:
    f.write(html)

 


免責聲明!

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



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