前言 大家早好、午好、晚好吖~ 今天我們來採集一下這個小姐姐網~ 環境使用: Python 3.8 解釋器 Pycharm 編輯器 import re import requests >>> pip install requests 如果安裝python第三方模塊: win + R 輸入 cmd 點 ...
前言
大家早好、午好、晚好吖~
今天我們來採集一下這個小姐姐網~
環境使用:
-
Python 3.8 解釋器
-
Pycharm 編輯器
-
import re
-
import requests >>> pip install requests
如果安裝python第三方模塊:
-
win + R 輸入 cmd 點擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車
-
在pycharm中點擊Terminal(終端) 輸入安裝命令
如何配置pycharm裡面的python解釋器?
-
選擇file(文件) >>> setting(設置) >>> Project(項目) >>> python interpreter(python解釋器)
-
點擊齒輪, 選擇add
-
添加python安裝路徑
pycharm如何安裝插件?
-
選擇file(文件) >>> setting(設置) >>> Plugins(插件)
-
點擊 Marketplace 輸入想要安裝的插件名字 比如:翻譯插件 輸入 translation / 漢化插件 輸入 Chinese
-
選擇相應的插件點擊 install(安裝) 即可
-
安裝成功之後 是會彈出 重啟pycharm的選項 點擊確定, 重啟即可生效
源碼、教程 ==點擊 藍色字體 自取== ,我都放在這裡了。
python實現案例: 批量數據採集/下載 <有方法 通用>
一. 數據來源分析
-
明確需求, 我們採集網上什麼數據內容, 在什麼地方
分析我們想要高清原圖在什麼地方有
-
瀏覽器自帶工具: 開發者工具 F12
- 滑鼠右鍵點擊 插件 選擇 network 刷新網頁
- 點擊選擇 Img 可以直接找到圖片地址
繼續分析, 圖片鏈接是從哪裡來的
- 通過搜索分析, 可以知道, 我們想要圖片原圖url 就在 圖片詳情頁網頁源代碼裡面
二. 代碼實現步驟:
-
發送請求, 模擬瀏覽器對於 圖片目錄頁面 發送請求
-
獲取數據, 獲取伺服器返迴響應數據
開發者工具 response -
解析數據, 提取我們想要數據內容
圖片詳情頁url地址 -
發送請求, 模擬瀏覽器對於 圖片詳情頁url 發送請求
-
獲取數據, 獲取伺服器返迴響應數據
開發者工具 response -
解析數據, 提取我們想要數據內容
圖片原圖高清url地址, 以及 標題 -
保存數據, 把圖片保存文本文件夾
代碼
# 導入數據請求模塊 --> 第三方模塊, 需要 pip install requests 不會 0 會 1 import requests # 導入正則模塊 內置模塊 不需要安裝的 import re
"""
1. 發送請求, 模擬瀏覽器對於 圖片目錄頁面url 發送請求
- python代碼如何模擬瀏覽器?
使用headers 請求頭
實現多頁數據採集:
分析請求url地址變化規律 --> 分析圖片目錄頁面url地址變化規律
每個網站數據結構是不一樣, 數據來源也不一樣, 但是分析數據來源思路 和 代碼實現步驟過程 差不多的
"""
for page in range(1, 5): # 字元串格式化方法: 把page傳入到字元串當中 print(f'=================正在採集第{page}頁的數據內容=================')
確定請求鏈接
有網站名得鏈接發出來就不給過拉~寶子們自己按照下麵得圖添加一下哦
==或點擊 藍色字體 自取== ,我都放在這裡了。
# 模擬瀏覽器 --> headers 請求頭 headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36' } # 發送請求 response = requests.get(url=url, headers=headers)
<Response [200]> 表示請求成功
"""
- 獲取數據, 獲取伺服器返迴響應數據
開發者工具 response
-
response.text
獲取響應文本數據 -
response.json()
獲取響應json字典數據 <一定要完整json數據, 否則就會報錯>
- 解析數據, 提取我們想要數據內容
圖片詳情頁url地址
re.findall
('匹配什麼數據', '什麼地方') 調用re模塊裡面findall
去找到匹配數據: 找到所有我們想要數據內容
從 什麼地方 去匹配查詢 什麼數據
從 response.text
去匹配 <li><a target="_blank" href="(.*?)" alt="(.*?)" title=".*?">
其中 (.*?)
就是我們想要的數據
-
()
表示精確匹配: 我們要的內容 -
沒有括弧 泛匹配 不要的內容
-
.*?
通配符 元字元 . 表示匹配任意字元<除了換行符\n以外> * 匹配前一個字元0或者無限個 ? 非貪婪匹配模式
"""
提取詳情頁url地址
img_info = re.findall('<li><a target="_blank" href="(.*?)" alt="(.*?)" title=".*?">', response.text) # for迴圈遍歷 把列表裡面元素 一個一個提取出來 for img, title in img_info:
img:
圖片詳情頁url地址
title:
圖片標題
"""
4. 發送請求, 模擬瀏覽器對於 圖片詳情頁url 發送請求
5. 獲取數據, 獲取伺服器返迴響應數據
開發者工具 response
6. 解析數據, 提取我們想要數據內容
圖片原圖高清url地址, 以及 標題
[0]
列表索引取值 提取第一個元素
"""
# 發送請求 獲取響應文本數據 html_data = requests.get(url=img, headers=headers).text # 提取原圖url地址 img_url = re.findall('<img alt=".*?" title=".*?" src="(.*?)">', html_data)[0]
"""
7. 保存數據, 把圖片保存文本文件夾
-
發送請求, 獲取數據內容
-
response.content
獲取響應二進位數據 <圖片/視頻/音頻/特定格式文件..>
如果圖片名字一樣的話, 會覆蓋掉
-
split()
字元串分割 返回列表 -
[-1]
列表索引取值, 提取最後一個元素 -
title + img_url.split('/')[-1]
字元串拼接
"""
# 獲取二進位數據 img_content = requests.get(url=img_url).content # 替換特殊字元 img_title = title + img_url.split('/')[-1] img_title = re.sub(r'[\/:*?:<>|]', '_', img_title) with open('img漫畫\\' + img_title, mode='wb') as f: f.write(img_content) print(img_url, img_title)
文章看不懂,我專門錄了對應的視頻講解,本文只是大致展示,完整代碼和視頻教程點擊下方藍字
==點擊 藍色字體 自取,我都放在這裡了。==