該程序爲入門級爬蟲,鞏固urllib庫的基本使用
分析步驟
- 發送一個請求
- 分析獲取請求的url地址,參數
- 處理參數併發送請求,獲取響應
- 把得到的響應保存文件
需求:爬蟲實現百度搜索並保存搜索後的網頁源代碼(第一頁)
環境:Python 3.6
使用的庫:urllib
使用的工具:Chrome,Pycharm
具體實現步驟
首先,導包
導入後續需要使用到的模塊
import urllib.request
import urllib.parse
1.使用百度搜索任意內容
使用百度搜索得到了發送請求的url地址(這裏搜索的是“蘋果”)
url = 'https://www.baidu.com/s?' # ?後面還有需要添加的參數
2.分析請求的url地址
簡單地分析這個url地址後,獲取需要用到的參數:ie=utf-8,wd=“搜索的內容”
target = input('請輸入需要搜索的內容:') # 定義一個變量獲取輸入
data = {
'ie': 'utf-8', # 這個參數經過測試可有可無,保險起見還是加上
'wd': target, # 想要搜索的內容
}
3.處理參數併發送請求
# 對參數進行編碼
data = urllib.parse.urlencode(data)
# 合併url
url = url + data
# 構造請求對象
request = urllib.request.Request(url, headers=headers)
# 發送請求
response = urllib.request.urlopen(request)
4.保存網頁源代碼
# 使用'wb'方式保存
with open('./result.html', 'wb') as fp:
fp.write(response.read())
# 如果僅使用'w'方式保存,需要進行解碼處理:
# fp.write(response.read().decode())
最後附上程序源代碼
import urllib.request
import urllib.parse
# 準備需要發送請求的url
url = 'https://www.baidu.com/s?'
# 準備請求頭
headers = {
'User-Agent': 'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Acoo Browser 1.98.744; .NET CLR 3.5.30729)',
}
# 鍵盤讀取需要搜索的內容
target = input('請輸入需要搜索的內容:')
# url上的一些參數
data = {
'ie': 'utf-8',
'wd': target,
}
# 對參數進行編碼
data = urllib.parse.urlencode(data)
# 合併url
url = url + data
# 構造請求對象
request = urllib.request.Request(url, headers=headers)
# 發送請求
response = urllib.request.urlopen(request)
# 保存文件
with open('./result.html', 'wb') as fp:
fp.write(response.read())