9點49,老婆孩子都睡着了, 繼續搞。
第1篇寫了訪問百度並打印頁面源碼,似乎沒什么實際意義,這次弄個有點用的,就是百度中輸入指定關鍵詞后搜索,然后獲取搜索結果第一頁(翻頁后面會陸續寫)。
比如我們輸入‘博客園’,下面是查詢結果:
這個時候我們看下瀏覽器中url地址 ,大概是這個樣子的
好老長,我們去除掉一些看不懂的部分,只保留ie 和wd 這2個參數試下能否正常訪問
可以的訪問,現在我們把這個url復制到 代碼中看下
https://www.baidu.com/s?ie=utf-8&wd=%E5%8D%9A%E5%AE%A2%E5%9B%AD
發現變化了沒,wd=博客園 變成了 wd= %E5%8D%9A%E5%AE%A2%E5%9B%AD,這個是瀏覽器對url做了編碼轉換。
所以當寫爬蟲時也需要將含中文或者特殊字符的關鍵詞參數做編碼轉換,上代碼:
from urllib.request import urlopen from urllib.request import Request from fake_useragent import UserAgent from urllib.parse import urlencode #設置request header ua = UserAgent() headers = { "User-Agent":ua.random } #拼接url args = { "ie":"utf-8", "wd":"博客園" } url = "https://www.baidu.com/s?{}".format(urlencode(args)) #封裝request request = Request(url,headers=headers) # 發送請求,獲取服務器給的響應 response = urlopen(request) # 讀取結果,無法正常顯示中文 html = response.read() # 進行解碼操作,轉為utf-8 html_decode = html.decode() # 打印結果 print(html_decode)