日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

新浪微博爬虫分享(2016年12月01日更新)

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 新浪微博爬虫分享(2016年12月01日更新) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

上篇文章:《新浪微博爬蟲分享(一天可抓取 1300 萬條數據)》、《新浪微博分布式爬蟲分享》
Github地址:SinaSpider
Q群討論:

更新完《QQ空間爬蟲分享(2016年11月18日更新)》,現在將新浪微博爬蟲的代碼也更新一下吧。

這次主要對爬蟲的種子隊列和去重策略作了優化,并更新了Cookie池的維護,只需拷貝代碼即可實現爬蟲分布式擴展,適合大規模抓取。


使用說明:

  • 需要安裝的軟件:Python2、Redis、MongoDB; 需要安裝的Python模塊:scrapy、requests、lxml。
  • 進入cookies.py,填入你的微博賬號(已有兩個賬號示例)。
  • 進入settings.py,如果你填入的賬號足夠多,可以將DOWNLOAD_DELAY = 10 和 CONCURRENT_REQUESTS = 1注釋掉。另外可以修改存放種子和去重隊列的機器,可以存放在兩臺不同的機器上面。
  • 運行launch.py啟動爬蟲,也可在命令行執行scrapy crawl SinaSpider(Linux只能采用后者)。
  • 分布式擴展:將代碼拷貝到一臺新機器上,運行即可。注意各子爬蟲要共用一個去重隊列,即將settings.py里面的FILTER_HOST設成同一臺機的IP。


  • 代碼說明:

  • 爬蟲基于scrapy+redis架構進行開發、優化。
  • 爬蟲支持斷點續爬。
  • 非常簡易地,便可實現分布式擴展。
  • 使用Redis的“位”進行去重,1G的內存可滿足80億個用戶ID的瞬間去重。
  • 將種子優化到不足40個字符,大大降低了Redis的內存消耗,也提高了各子爬蟲從Redis取種子的速度。
  • 維護了一個Cookie池,各子機器共用一個Cookie池,斷點續爬不會重復獲取Cookie,當某個Cookie失效時會自動更新。
  • 注:本項目用代碼提交請求進行登錄,不會遇到驗證碼。但是有個情況:如果一次性獲取幾十個Cookie,新浪會檢測到你的IP異常(大約多久會被檢測出來?以前是一分鐘左右,現在好像幾十秒,我們就用這幾十秒登陸完所有賬號,放心 代碼登錄很快的),大約十個小時后會給你的IP恢復正常。IP被檢測為異常會怎樣?不會影響爬蟲的抓取,只是你再登錄賬號時會被要求輸入驗證碼,日志如[Sina_spider3.cookies] WARNING: Failed!( Reason:為了您的帳號安全,請輸入驗證碼 )。
    如果我的賬號還沒登錄完就出現這種情況怎么辦?可以先將爬蟲停了,機器換個IP繼續獲取Cookie,放心 已獲取到Cookie的賬號會自動跳過。當然如果你不喜歡受這個限制,可以用打碼平臺或著自己寫個程序把驗證碼搞定。其實只是第一次啟動爬蟲才是需要獲取那么多Cookie,之后只有等哪個Cookie失效了才會去更新。


    數據說明:

    用戶發表的微博:

    _id : 用戶ID-微博ID ID : 用戶ID Content : 微博內容 PubTime : 發表時間 Co_oridinates : 定位坐標 Tools : 發表工具/平臺 Like : 點贊數 Comment : 評論數 Transfer : 轉載數

    用戶的個人信息:

    _id: 用戶ID NickName: 昵稱 Gender: 性別 Province: 所在省 City: 所在城市 BriefIntroduction: 簡介 Birthday: 生日 Num_Tweets: 微博數 Num_Follows: 關注數 Num_Fans: 粉絲數 SexOrientation: 性取向 Sentiment: 感情狀況 VIPlevel: 會員等級 Authentication: 認證 URL: 首頁鏈接




    2016年12月15日更新:

    有人反映說爬蟲一直顯示爬了0頁,沒有抓到數據。

  • 把settings.py里面的LOG_LEVEL = ‘INFO’一行注釋掉,使用默認的”DEBUG”日志模式,運行程序可查看是否正常請求網頁。
  • 注意程序是有去重功能的,所以要清空數據重新跑的話一定要把redis的去重隊列刪掉,否則起始ID被記錄為已爬的話也會出現抓取為空的現象。清空redis數據 運行cleanRedis.py即可。
  • 另外,微博開始對IP有限制了,如果爬的快 可能會出現403,大規模抓取的話需要加上代理池。



  • 2017年3月23日更新:

    微博從昨天下午三點多開始做了一些改動,原本免驗證碼獲取Cookie的途徑已經不能用了。以前為了免驗證碼登錄,到處找途徑,可能最近爬的人多了,給封了。
    那么就直面驗證碼吧,走正常流程登錄,才沒那么容易被封。此次更新主要在于Cookie的獲取途徑,其他地方和往常一樣(修改了cookies.py,新增了yumdama.py)。
    加了驗證碼,難度和復雜程度都提高了一點,對于沒有編程經驗的同學可能會有一些難度。
    驗證碼處理主要有兩種:手動輸入和打碼平臺自動填寫(手動輸入配置簡單,打碼平臺輸入適合大規模抓取)。
    手動方式流程:
    1. 下載PhantomJS.exe,放在python的安裝路徑(適合Windows系統,Linux請找百度)。
    2. 運行launch.py啟動爬蟲,中途會要求輸入驗證碼,查看項目路徑下新生成的aa.png,輸入驗證碼 回車,即可。

    打碼方式流程:
    1. 下載PhantomJS.exe,放在python的安裝路徑。
    2. 安裝Python模塊PIL(請自行百度,可能道路比較坎坷)
    3. 驗證碼打碼:我使用的是 http://www.yundama.com/ (真的不是打廣告..),將username、password、appkey填入yumdama.py(正確率挺高,weibo.cn正常的驗證碼是4位字符,1元可以識別200個)。
    4. cookies.py中設置IDENTIFY=2,運行launch.py啟動爬蟲即可。




    2017年4月5日更新:

    微博從4月1日開始對IP限制更嚴了,很容易就403 Forbidden了,解決的辦法是加代理。從16年12月更新代碼后爬微博的人多了許多,可能對weibo.cn造成了挺多無效訪問。所以此次代碼就不更新了,過濾一些爬蟲新手,如果仍需大量抓取的,在middleware.py中加幾行代碼,帶上代理就行了,難度也不大。沒加代理的同學將爬蟲速度再降低一點,還是能跑的。
    可能有挺多同學需要微博數據寫論文,在群里找一下已有數據的同學吧,購買代理也不便宜。
    (我也沒怎么跑微博,手上也沒什么數據)




    轉載請注明出處,謝謝!(原文鏈接:http://blog.csdn.net/bone_ace/article/details/53379904)

    總結

    以上是生活随笔為你收集整理的新浪微博爬虫分享(2016年12月01日更新)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。