【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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM