我們在百度搜索時,輸入關鍵詞,比如“hello”,URL發生變化,如下:
如果只截取前一部分“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)