如何用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?

TAG:Python | 爬蟲計算機網路 | pixiv |