前言
大家早好、午好、晚好吖~
今天我們來采集一下這個小姐姐網~

環境使用:
-
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="https://www.cnblogs.com/Qqun261823976/p/(.*?)" alt="(.*?)" title=".*?"> 其中 (.*?) 就是我們想要的資料
-
()表示精確匹配: 我們要的內容 -
沒有括號 泛匹配 不要的內容
-
.*?通配符 元字符 . 表示匹配任意字符<除了換行符\n以外> * 匹配前一個字符0或者無限個 ? 非貪婪匹配模式
"""
提取詳情頁url地址
img_info = re.findall('<li><a target="_blank" href="https://www.cnblogs.com/Qqun261823976/p/(.*?)" 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="https://www.cnblogs.com/Qqun261823976/p/(.*?)">', 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)








文章看不懂,我專門錄了對應的視頻講解,本文只是大致展示,完整代碼和視頻教程點擊下方藍字
==點擊 藍色字體 自取,我都放在這里了,==
尾語 ??
好了,我的這篇文章寫到這里就結束啦!
有更多建議或問題可以評論區或私信我哦!一起加油努力叭(? ?_?)?
喜歡就關注一下博主,或點贊收藏評論一下我的文章叭!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/518836.html
標籤:Python
下一篇:drf介面檔案
