【Python爬蟲】模擬百度搜索並保存網頁源代碼

該程序爲入門級爬蟲,鞏固urllib庫的基本使用

分析步驟

  1. 發送一個請求
  2. 分析獲取請求的url地址,參數
  3. 處理參數併發送請求,獲取響應
  4. 把得到的響應保存文件

需求:爬蟲實現百度搜索並保存搜索後的網頁源代碼(第一頁)
環境:Python 3.6
使用的庫:urllib
使用的工具:Chrome,Pycharm

具體實現步驟


首先,導包

導入後續需要使用到的模塊

import urllib.request
import urllib.parse

1.使用百度搜索任意內容

使用百度搜索得到了發送請求的url地址(這裏搜索的是“蘋果”)
請求的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())


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章