寫在前面:筆記所有內容均來自嗶哩嗶哩(B站相關視頻鏈接(侵刪))
一、requests模塊
(一)理論相關
requests模塊:python中原生的一款基于網路請求的模塊,功能非常強大,簡單便捷效率極高,
作用:模擬瀏覽器發請求,
如何使用:(requests模塊的編碼流程)
1、指定url
2、發起請求
3、獲取回應資料
4、持久化存盤
(二)實戰編碼
一個簡單的小栗子1:爬取搜狗首頁的頁面資料(搜狗首頁)
python代碼實作:
#!/usr/bin/env python
# -*- cording:utf-8 -*-
# 爬取搜狗首頁的資料
import requests
if __name__ == "__main__":
# 第一步 :指定url
url = 'https://www.sogou.com/'
# 第二步 :發起請求
# get方法會回傳一個回應物件
response = requests.get(url=url)
# 第三步 :獲取回應資料
page_text = response.text
print(page_text)
# 第四步 :持久化存盤
with open('./sogou.html', 'w', encoding='utf-8') as fp: # ./是指生成的檔案創建在當前目錄下
fp.write(page_text)
print("爬取資料結束!!")
結果截圖:

------------------------第一天就到這吧 2021.2.2 22:46 持續更新中…-----------------
一個簡單的小栗子2:requests實戰之百度網頁的采集器(百度搜索)
python代碼實作:
#!/usr/bin/env python
# -*- cording:utf-8 -*-
import requests
if __name__ == "__main__":
# UA偽裝:將對應的User—Agent封裝到一個字典中
# UA偽裝的目的是去對抗UA檢測
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.56'
}
url = 'https://www.baidu.com/s' # 其中s是搜索模塊的意思
# 將需要的關鍵詞引數放入到字典中:
kw = input('給我一個關鍵詞')
param = {
'wd': kw # 這里的wd是word的縮寫,也就是關鍵詞的意思
}
response = requests.get(url=url, params=param, headers=headers)
page_text = response.text
fileName = kw + '.html'
with open("./" + fileName, 'w', encoding='utf-8') as fp: # 這里不加"./"也可以,好像是默認就保存在當前目錄之下
fp.write(page_text)
print(fileName + "保存成功")
需要解釋的一些地方:
0. 查看瀏覽器User-Agent的方法:打開你的瀏覽器在地址欄輸入:about:version,然后其中的用戶代理就是(這個方法原文在這:點我跳轉)
1. 百度搜索的地址url當中,s表示的是搜索(search);wd表示的是關鍵詞(word),問號在代碼的撰寫中可以省略,如圖

(其實后面還有一大串,被我刪掉了,不過不影響搜索,俺也不知道為啥,大家可以試試)
結果截圖:

和打開該.html的截圖,Ctrl+Alt+L是正規化爬取下來的.html檔案的格式,(置頂的居然是廣告,屬實受不了)

一個簡單的小栗子3:requests實戰之破解百度翻譯(百度翻譯鏈接)
python代碼實作:
#!/usr/bin/env python
# -*- cording:utf-8 -*-
import requests
import json
if __name__ == "__main__":
# 第一步:指定url
post_url = 'https://fanyi.baidu.com/sug'
# 第二步:進行UA偽裝:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.56'
}
# 第三步:post的請求引數處理
word = input("請輸入要翻譯的單詞")
data = {
'kw': word
}
# 第四步:發送請求
response = requests.post(url=post_url, data=data, headers=headers)
# 5第五步:獲取回應的資料,回傳的是json型別的資料,故可以使用json()
dic_obj = response.json()
# 持久化存盤
fileName = word + '.json'
# fp=open(fileName,'w', encoding='utf-8')
with open("./" + fileName, 'w', encoding='utf-8') as fp: # 這里不加"./"也可以,好像是默認就保存在當前目錄之下
json.dump(dic_obj, fp=fp, ensure_ascii=False)
print('over!!!!')
需要解釋的一些地方:
0. 百度翻譯的翻譯欄輸入單詞后頁面就會區域重繪,使用的是Ajax技術,所以要定位到Ajax的請求,方法是:網頁右擊,點擊檢查(谷歌瀏覽器會顯示英文,不過問題不大)

而具體為什么是這些個“sug”中的這個sug,原因是這個sug的最下面包含了完整的單詞資訊

最后也發現改請求是post請求,故代碼中要使用post請求,而且還可以發現回傳的資料是json格式
結果截圖:

------------------------第二天就到這吧 2021.2.3 23:19 持續更新中…-----------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/256380.html
標籤:python
