Python模擬爬蟲抓取知乎用戶信息以及人際拓撲關係,使用scrapy爬蟲框架,數據存儲使用mongo數據庫。
既然需要用到scrapy爬蟲框架,那就來科普一下scrapy爬蟲框架吧~
Scrapy:1、Python開發的一個快速、高層次的屏幕抓取和web抓取框架,用於抓取 web站點並從頁面中提取結構化的數據。Scrapy用途廣泛,可以用於數據挖掘、監測和自動化測試。
2、Scrapy吸引人的地方在於它是一個框架,任何人都可以根據需求方便的修改。它也提供了多種類型爬蟲的基類,如BaseSpider、sitemap爬蟲等,最新版本又提供了web2.0爬蟲的支持。
(科普完啦~咱迴歸正題~)
爬蟲項目部署:
進入zhihu_spider後執行```docker-compose up``` ,進入container後和本地運行方法相同,依次啟動mongo、rabbitmq、異步任務、爬蟲進程即可。
其它需要說明的問題:
爬蟲框架從start\_requests開始執行,此部分會提交知乎主頁的訪問請求給引擎,並設置回調函數為post_login.
post\_login解析主頁獲取\_xsrf保存為成員變量中,並提交登陸的POST請求,設置回調函數為after\_login.
after\_login拿到登陸後的cookie,提交一個start\_url的GET請求給爬蟲引擎,設置回調函數parse\_people.
parse\_people解析個人主頁,一次提交關注人和粉絲列表頁面到爬蟲引擎,回調函數是parse\_follow, 並把解析好的個人數據提交爬蟲引擎寫入mongo。
parse\_follow會解析用戶列表,同時把動態的人員列表POST請求發送只引擎,回調函數是parse\_post\_follow,把解析好的用戶主頁鏈接請求也發送到引擎,人員關係寫入mongo。
parse\_post\_follow單純解析用戶列表,提交用戶主頁請求至引擎。
本地運行請注意:
爬蟲依賴mongo和rabbitmq,因此這兩個服務必須正常運行和配置。為了加快下載效率,圖片下載是異步任務,因此在啟動爬蟲進程執行需要啟動異步worker,啟動方式是進入zhihu_spider/zhihu目錄後執行下面命令:
celery -A zhihu.tools.async worker --loglevel=info
源碼太長了,這裡就不一一一展示了,想要完整源碼練手的小夥伴
複製鏈接至瀏覽器打開:https://pan.baidu.com/s/1BeZBe-2osp1OdwR7_xQvwA
即可獲取完整源碼(無提取碼)
源碼測試截圖:
最後,如果你想學python編程可以私信小編“01”獲取素材資料與開發工具和聽課權限!
聲明:本文於網絡整理,著作權歸原作者所有,如有侵權,請聯繫小編刪除。