源碼地址github,裏面有詳細註釋:https://github.com/15160200501/scrapy-
可以直接運行,不能運行的話,接口應該是換了
工具:pycharm、python37、mongodb數據庫、數據庫可視化工具robo3t
知乎:
思路:1、選定候選人
2、獲取粉絲和關注列表
3、獲取列表用戶信息
4、獲取每位用戶粉絲和關注
先創建一個Scrapy項目:
先在settings:不遵循robots協議,在HEADERS裏面添加頭部信息user-agent,不添加頭信息會報狀態碼
執行scrapy crawl zhihu,看是否返回該url的源碼(個人信息的api口)
執行scrapy crawl zhihu,看是否返回該url的源碼(關注列表的api接口)
執行scrapy crawl zhihu,看到都能返回該url的json文本
在UserItem中編寫item,需要爬取的信息,根據抓包中的json看到
執行scrapy crawl zhihu,能看到返回第一個作者信息和關注列表的信息,有下一頁,進行自己的回調。
爬取第一個作者的個人信息的關注列表後,再爬取關注列表裏的關注的人,層層遞歸爬取關注的人
再添加粉絲的列表,也進行跟關注一樣的操作,層層遞歸爬取粉絲列表的粉絲個人信息
要存儲到mongodb數據庫中,可以看到scrapy的官方文檔https://doc.scrapy.org/en/latest/topics/item-pipeline.html,複製粘貼到pipeline管道文件中,而後再進行修改
,
再settings中再進行一些改動
完成這些,已經完成知乎全部用戶信息的代碼編寫呢,之後就是在命令行執行scrapy crawl zhihu
由於爬取的太多,按了ctrl+c暫停了爬取,之後在mongodb數據庫的可視化工具robo3t進行知乎用戶的信息查看,可以看到右上角500,說明共爬取了10頁,一頁爬取50個個人信息,爬取了將近500個個人的信息