之前好多高質量網站都不見了,肯定是你們整活整多了,趁你們不注意,我先悄悄多保存點~

事前準備
讓我們開始今天的操作

1、環境配置**
安裝一個Python和pycharm就好了
2、模塊使用
requests # 資料請求 parsel # 決議模塊 (提取資料)
這兩個模塊沒有安裝的話,先安裝一下,win+R 輸入cmd 按回車彈出命令提示符視窗,輸入 pip install 加上模塊名即可 , 如:pip install requests 然后按回車即可安裝成功,詳細教程見置頂文章,我有詳細介紹,
3、如何配置pycharm里面的python解釋器?
- 選擇file(檔案) >>> setting(設定) >>> Project(專案) >>> python interpreter(python解釋器)
- 點擊齒輪, 選擇add
- 添加python安裝路徑
4、pycharm如何安裝插件?
- 選擇file(檔案) >>> setting(設定) >>> Plugins(插件)
- 點擊 Marketplace 輸入想要安裝的插件名字 比如:翻譯插件 輸入 translation / 漢化插件 輸入 Chinese
- 選擇相應的插件點擊 install(安裝) 即可;
- 安裝成功之后 是會彈出 重啟pycharm的選項 點擊確定, 重啟即可生效;
5、基本流程
基本上所有的爬蟲都是這個步驟
一. 資料來源分析
- 抓取網站是什么?想要獲取網站什么樣資料內容?比如爬取圖片,從一張圖片去分析,通過開發者工具進行抓包分析, 對比我們想要圖片url地址一些引數;
二. 代碼實作步驟:
- 發送請求, 對于分析得到url地址發送請求;
請求網址
請求方式
請求頭引數 >>> 偽裝 可以把python代碼偽裝成瀏覽器(客戶端)發送請求;
如果不進行偽裝會有什么后果 >>> 不會給你回傳你想要資料;
2. 獲取資料,獲取response服務器回傳回應資料;
3. 決議資料,提取我們想要資料內容,圖片url地址以及圖片標題;
4. 保存資料,把圖片資料保存到本地;
代碼決議
開始展示代碼吧,不然大家想打我了~

1、模塊匯入
首先把我們需要用的模塊匯入進去,匯入資料請求模塊和資料決議模塊,匯入模塊沒有使用, 灰色待機狀態,
import requests import parsel
2、發送請求
headers 請求頭引數, 可以開發者工具里面直接進行復制, 其次headers字典資料型別, 鍵值對;
user-agent: 用戶代理 表示瀏覽器基本身份標識;
cookie: 用戶資訊, 檢測用戶是否有登陸賬號;
for page in range(2, 11): url = f'htpps://sj.enterdesk.com/woman/{page}.html' headers = { 'cookie': 't=f2cf055ce8713058cbfdbd1561c38e86; r=1281; Hm_lvt_86200d30c9967d7eda64933a74748bac=1645625923,1646892448; Hm_lpvt_86200d30c9967d7eda64933a74748bac=1646894465', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36' } response = requests.get(url=url, headers=headers) # <Response [200]> 回傳回應物件 200狀態碼標識請求成功
3、獲取資料
獲取服務器回傳資料內容, 獲取回應物件文本資料/字串資料,
回傳資料內容和我們在開發者工具里面看到不一樣,說明你被服務器識別出來是你爬蟲程式,所以他沒有給你回傳資料,
print(response.text)
4、決議資料
css選擇器 xpath re 三種決議方式都可以去用選擇最適合;
css選擇器: 根據標簽屬性提取資料內容;
對于獲取response.text 進行資料型別轉換 轉成 selector 物件
attr() 屬性選擇器 .egeli_pic_li .egeli_pic_dl dd a img 都是定位標簽, 告訴它是哪一個標簽
img::attr(src) 取img標簽里面的src屬性資料
getall() 獲取所有標簽內容資料 回傳串列資料型別
selector = parsel.Selector(response.text) src = selector.css('.egeli_pic_li .egeli_pic_dl dd a img::attr(src)').getall() alt = selector.css('.egeli_pic_li .egeli_pic_dl dd a img::attr(alt)').getall() for img_url, title in zip(src, alt): img_url = img_url.replace('edpic_360_360', 'edpic_source')
5、保存資料
img_content = requests.get(url=img_url, headers=headers).content # 獲取二進制資料內容 with open('img\\' + title + '.jpg', mode='wb') as f: f.write(img_content) print(img_url, title)
好了,代碼就到這里結束了,采集結果我也不知不覺給大家展示在文中了,大家細細品味~
兄弟們,敲代碼要勤快,永遠不要用戰術上的勤奮,來掩飾戰略上的懶惰,
記得點贊收藏~

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/492466.html
標籤:Python
