1. 程式人生 > 其它 >【Python爬蟲】採集一個優秀藝術家相互交流的網站——P站(一個正經的網站)

【Python爬蟲】採集一個優秀藝術家相互交流的網站——P站(一個正經的網站)

前言

總所周知, p站是日本知名的虛擬社群, 聚集了眾多來自日本, 中國, 韓國, 美國等國家的優秀藝術家。他們在p站上相互交流, 分享高清優秀插畫, 是一個正經的網站

點選領取【程式碼】【相關教程、資料】,或者對於本篇文章有疑問的同學可以私信我

環境介紹

  • python 3.8 – anaconda 安裝了一些模組 / 自動的 配置環境變數
  • pycharm 2021專業版 >>> 啟用碼
  • requests >>> pip install requests
  • parsel >>> pip install parsel

開始程式碼

首先需要匯入模組

import requests     # 傳送網路請求的模組
import parsel       # 提取資料
import re

傳送請求

url_1 = 'https://www.acg-pixiv.com/tags/450.html'
response_1 = requests.get(url_1)

獲取資料

data_html_1 = response_1.text

提取資料

selector = parsel.Selector(data_html_1)
# 提取連結 屬性內容 @屬性名稱 css xpath re 
href_list = selector.xpath('/html/body/div/div[1]/ul/li/a/@href').getall() title_list = selector.xpath('/html/body/div/div[1]/ul/li/a/@title').getall()

詳情頁連結

for info in zip(href_list, title_list):
    # 索引取值 元組
    url_2 = 'https://www.acg-pixiv.com' + info[1]

每一個詳情頁的網頁原始碼

# content? 獲取二進位制資料
response_2 = requests.get(url_2).text

提取詳情頁中的圖片連結

selector_2 = parsel.Selector(response_2)
# 圖片連結
url = selector_2.xpath('/html/body/div/div[1]/div[1]/div/img[1]/@src').get()
print(url)

圖片連結

# 當這個程式報錯的時候
try:
    img_data = requests.get(img_url, timeout=5).content
except:
    # 圖片連結改一下
    img_url = img_url.replace('800', '400')
    img_data = requests.get(img_url).content

替換特殊字元

title = re.sub(r'[\\/:*?"<>|]', '_', info[1])

儲存資料

print(f'---------正在爬取{title}---------')
with open(f'img/{title}.jpg', mode='wb') as f:
    f.write(img_data)