如何用python 寫一個爬蟲用來爬P 站特定標籤下的高贊作品?
不請自來。
Python寫這些爬蟲,批量獲取還是挺簡單的……不長逛P站但是寫了個可以獲取知乎指定收藏夾下的高贊答案的東西……
獲取知乎指定收藏夾下的高贊答案
獲取P站特定標籤下的高贊作品
這兩個需求應該是差不多的……
爬取收藏夾的代碼大概是這樣:
__author__ = "7sDream"
import zhihu
collection = zhihu.Collection("http://www.zhihu.com/collection/19686512")
for answer in collection.answers:
if answer.upvote &>= 1000:
answer.save(path=collection.name)
結果是這樣:
理論上來說爬P站應該差不多……
做好cookies管理,HTML解析就差不多了。
如果Python會的差不多了看看這個知乎模塊的源碼應該能寫出來P站的
源碼:7sDream/zhihu-py3 · GitHub
================================
後記:
感謝這個問題。
因為測試備份這個收藏夾的時候發現了代碼的一個Bug:
收藏夾里有這樣一個回答…………
然後獲取答案鏈接的時候報TypeError了……忘記監測知乎答案的有效性了……我的鍋 = =
過年沒時間改,年後再說。
歡迎pull request。
================================
update
還是放心不下…… = =
大過年的抽了個時間把上述問題給修復了
對Question下無效答案的處理方法是照常解析,對Collection下無效答案的處理方法為檢測跳過並提示。前面都是本bug生產者的胡言亂語,我的腳本和gui在文章末有鏈接。
目前功能有每日排行,關鍵字,畫師作品,畫師收藏夾,均支持多線程,僅每日排行有協程。(-a 開啟)。
還有資料庫方法代替關鍵字,還在測試中。(資料庫倒是已經爬完了)
——————————————
首先說一下做這個爬蟲的初衷,就是學會了python之後總想找點事做做,於是在大二左右製作了1.0版本的pixiv。
最初的版本基本就是入門級別,手動複製cookies,使用urllib.request,gzip,re這些自帶的庫。初版的腳本僅具有爬取並下載畫師的作品和收藏夾,按關鍵字爬取高收藏圖片等。是一個單線程,不能從命令行讀取參數的小腳本。
之後在這個版本的基礎上,我為了隨時停止爬取而在下次繼續爬取,增加了一個使用xml記錄爬取數據的小功能。為了更快的爬取速度,使用了threading實現多線程爬取。
在大三之後,我發現了 pixiv 這個項目 ,感謝 wanglifree 提供的模擬登錄方式,我fork了他的項目,在他的基礎上使用它的登錄和圖片下載代碼,重新實現1.0的功能。因為代碼比之前的區別很大,而且使用了requests,所以我將這個版本叫做pixiv2.0。
而在此之後,我在這個基礎上增加了使用getopt讀取命令行參數,使得以後不用爬取每次都重新在代碼上做修改,遷移至3.5,來使用協程(然而協程並不太讓我滿意,所以並沒有全面採用,不過在之後的資料庫建立時,這次經歷提供了寶貴經驗)。
在完成這些之後,我為了讓一些不了解編程的童鞋也能使用我的爬蟲那個,使用pyinstaller打包了一個pyqt5編寫的gui版本,過程中踩了很多坑,詳情:Pyinstaller打包PyQt5踩的坑們
最近gui版本不再研究,腳本還在更新,主要是為了解決無法使用關鍵字爬取到比較早的圖片這一問題。解決方法就是按用戶收藏夾把所有數據爬下來存一個資料庫。目前有數據600w+,十萬收藏8個,一萬收藏1w2,一千收藏36w+。
gui版本在Pyinstaller打包PyQt5踩的坑們 里可以找到
腳本地址: pixiv2.0
新手入門,寫了一個很簡單的,cookie先人工登陸網站抓包獲取,然後就一直用那個cookie了,詳見我的博客Python爬蟲入門:下載Pixiv特定關鍵詞的高贊作品
源代碼python/pixivSpider.py at master · wjw12/python · GitHub
推薦閱讀:
※scrapy遇到問題,希望得到大家幫助?
※對於爬蟲項目,python 2和3哪個好些?
※有c#基礎,最近對爬蟲感興趣,開始轉學python,求指導?
※如何用爬蟲獲取網易雲音樂歌單中的歌曲?
※爬蟲怎麼解決封IP?