<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          開源豆瓣系列爬蟲之用戶廣播爬蟲

          共 1820字,需瀏覽 4分鐘

           ·

          2021-08-25 12:21

              點(diǎn)擊上方 月小水長 并 設(shè)為星標(biāo),第一時間接收干貨推送

          這是 月小水長 的第 77 篇原創(chuàng)干貨

          目前公眾號平臺改變了推送機(jī)制,點(diǎn)“贊”、點(diǎn)“在看”、添加過“星標(biāo)”的同學(xué),都會優(yōu)先接收到我的文章推送,所以大家讀完文章后,記得點(diǎn)一下“在看”和“贊”。

          應(yīng)不住讀者的請求,打算新開一個豆瓣系列的爬蟲,主要是為了爬取豆瓣的小組和用戶信息,并且全部開源出來。
          今天這篇主要是分享豆瓣用戶廣播爬蟲,可能還是有不少同學(xué)對豆瓣廣播不熟悉的,看下圖就很清楚,豆瓣的廣播有點(diǎn)類似于 QQ 空間的說說,但是多了一些豆瓣自己的元素,比如,”在看“、”在讀“,”聽過“ 這些 Action。


          豆瓣用戶主頁廣播


          抓取的主要內(nèi)容是廣播里的聽、說、讀、看這四部分(不包括轉(zhuǎn)發(fā)的內(nèi)容),聽這一個又包括在聽,想聽,聽過等,所有種類比較多,同時字段又不規(guī)則,所以本次保存的文件形式不再是 csv,而是 json;我個人理解,csv 文件對應(yīng) mysql 等結(jié)構(gòu)化數(shù)據(jù)庫,json 文件對應(yīng) mongodb 等非結(jié)構(gòu)化數(shù)據(jù)庫,如果想改成 mongodb,在后文獲取代碼修改保存文件的函數(shù)即可;對于開源的東西,我傾向于使用 csv/json 文件形式保存數(shù)據(jù),一是配置少,二是直觀。這份代碼運(yùn)行保存的結(jié)果如下


          保存的json文件


          整個項(xiàng)目的倉庫地址是

          https://github.com/Python3Spiders/DouBanSpider

          可以在瀏覽器打開(best) 或者直接點(diǎn)擊閱讀原文獲取代碼;主要講講如何定制化使用和二次開發(fā)。
          這份代碼需要跑起來,首先需要一個配置文件 user_config(git 倉庫里就有),其格式如下
          { "users": [   "https://www.douban.com/people/G16022222",   "https://www.douban.com/people/170796758"], "cur_user_index": 0, "cur_user_cur_page_index": 31}

          users 就是你想爬取的用戶主頁列表,這個直接去豆瓣網(wǎng)復(fù)制就可以得到;為了避免每次都要重新開始抓取第一個用戶,字段 cur_user_index 就是為了保存上一次已經(jīng)抓取到哪一個用戶了,下次可以直接繼續(xù),這個保存過程是程序自己完成了,沒有特殊需要不用人為改動;爬蟲是基于翻頁的,cur_user_cur_page_index 保存了當(dāng)前抓取的用戶翻到哪一頁了,和 cur_user_index 組合起來就可以使用更細(xì)粒度的恢復(fù)抓取。

          另外一個是需要在 py 文件中修改 Cookie,在 Chrome 開發(fā)者工具中打開 Network 欄,過濾 urlPath 的關(guān)鍵詞 statuses,復(fù)制過濾后的請求的 Cookie。


          如何獲取 Cookie

          程序設(shè)計(jì)了每翻頁一次休眠 3 s,測試發(fā)現(xiàn)運(yùn)行過快會導(dǎo)致下面的結(jié)果而導(dǎo)致程序中斷,這也是我為什么設(shè)置恢復(fù)抓取邏輯的原因之一,只要在網(wǎng)頁打開豆瓣輸入驗(yàn)證碼,重新運(yùn)行就能恢復(fù)抓取。



          豆瓣網(wǎng)頁輸入驗(yàn)證碼

          開源的代碼是最小可行性產(chǎn)品;比如出現(xiàn)驗(yàn)證碼,可以二次開發(fā)個驗(yàn)證碼識別程序自動化;為了防止出現(xiàn)驗(yàn)證碼,可以自己構(gòu)建代理池(一般免費(fèi)的代理質(zhì)量不高),或者付費(fèi)買代理 ip,無非就是構(gòu)建服務(wù),給請求添加 proxies 參數(shù)即可;為了加快速度,可以使用線程池,協(xié)程等;凡此種種,皆不是本開源爬蟲的本身,定位只是一個豆瓣備份工具而已;大家可以二次開發(fā)。

          開源的目的是為了方便大家使用,有疑問請?jiān)?git 倉庫上提 issues ;同時一起貢獻(xiàn)這份爬蟲代碼,有覺得代碼設(shè)計(jì)邏輯可以改進(jìn)的或者有 bug 的,請?zhí)?pull request

          歡迎體驗(yàn),吐槽。

          瀏覽 92
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产免费黄色小视频 | 免费一区二区三区ap | wwwww黄 | 爱爱视图 | 国产大雷美女被干的网站 |