? ? 爬取知乎輪子哥關(guān)注的人
? 首先,打開知乎找到輪子哥關(guān)注的人的頁面长赞,單擊鼠標(biāo)右鍵晦攒,查看元素,
發(fā)現(xiàn)第一個狀態(tài)碼為200得哆,點擊進(jìn)去看到
好像并沒有我們想要的數(shù)據(jù)脯颜,所以繼續(xù)往下找狀態(tài)碼為200的,于是我們找到了贩据,如果請求它會給我返回一個json類型的數(shù)據(jù)
點開發(fā)現(xiàn)
對照上面的確實輪子哥關(guān)注了一個叫余歸的人栋操,所以這次找對了,點擊消息頭饱亮,找到如何請求它
找到了URL矾芙,但是在程序中請求時還需要headers,所以點擊"編輯和重發(fā)"近上,找到了它的請求頭
? 做好了一切準(zhǔn)備工作后可以動手寫程序了
第一行剔宪,導(dǎo)入requests模塊,這是Python第三模塊需要自己安裝壹无,導(dǎo)入urllib模塊的error方法
第二行葱绒,將找到的URL賦值給url這個變量
第三行,將找到的headers以鍵值對的方式封裝到字典里斗锭,并找個名為header的變量存儲它
第四段地淀,利用requests模塊里的get方法,給服務(wù)器發(fā)送一個請求岖是,服務(wù)器會根據(jù)這個請求返回一個東西帮毁,它返回的正是上面所提到的json數(shù)據(jù),這個可以根據(jù)瀏覽器中的類型來判斷 璧微,為了代碼的健壯性給它加上捕捉error的功能
第五段利用json方法解析所返回的json數(shù)據(jù)作箍,解析完成后會返回一個字典形式的數(shù)據(jù),把它保存為jn
通過遍歷字典中的data->name找到這一頁面輪子哥關(guān)注的人
用同樣的方法還可以爬取一個人的關(guān)注者前硫,兩者共同關(guān)注的人等。
但是我爬取時并不是一帆風(fēng)順的荧止,開始時為了我并沒有在header中傳入cookies會出現(xiàn)
打印一下response
100——客戶必須繼續(xù)發(fā)出請求
101——客戶要求服務(wù)器根據(jù)請求轉(zhuǎn)換HTTP協(xié)議版本
200——交易成功
201——提示知道新文件的URL
202——接受和處理屹电、但處理未完成
203——返回信息不確定或不完整
204——請求收到,但返回信息為空
205——服務(wù)器完成了請求跃巡,用戶代理必須復(fù)位當(dāng)前已經(jīng)瀏覽過的文件
206——服務(wù)器已經(jīng)完成了部分用戶的GET請求
300——請求的資源可在多處得到
301——刪除請求數(shù)據(jù)
302——在其他地址發(fā)現(xiàn)了請求數(shù)據(jù)
303——建議客戶訪問其他URL或訪問方式
304——客戶端已經(jīng)執(zhí)行了GET危号,但文件未變化
305——請求的資源必須從服務(wù)器指定的地址得到
306——前一版本HTTP中使用的代碼,現(xiàn)行版本中不再使用
307——申明請求的資源臨時性刪除
400——錯誤請求素邪,如語法錯誤
401——請求授權(quán)失敗
402——保留有效ChargeTo頭響應(yīng)
403——請求不允許
404——沒有發(fā)現(xiàn)文件外莲、查詢或URl
405——用戶在Request-Line字段定義的方法不允許
406——根據(jù)用戶發(fā)送的Accept拖,請求資源不可訪問
407——類似401,用戶必須首先在代理服務(wù)器上得到授權(quán)
408——客戶端沒有在用戶指定的餓時間內(nèi)完成請求
409——對當(dāng)前資源狀態(tài)偷线,請求不能完成
410——服務(wù)器上不再有此資源且無進(jìn)一步的參考地址
411——服務(wù)器拒絕用戶定義的Content-Length屬性請求
412——一個或多個請求頭字段在當(dāng)前請求中錯誤
413——請求的資源大于服務(wù)器允許的大小
414——請求的資源URL長于服務(wù)器允許的長度
415——請求資源不支持請求項目格式
416——請求中包含Range請求頭字段磨确,在當(dāng)前請求資源范圍內(nèi)沒有range指示值,請求也不包含If-Range請求頭字段
417——服務(wù)器不滿足請求Expect頭字段指定的期望值声邦,如果是代理服務(wù)器乏奥,可能是下一級服務(wù)器不能滿足請求
500——服務(wù)器產(chǎn)生內(nèi)部錯誤
501——服務(wù)器不支持請求的函數(shù)
502——服務(wù)器暫時不可用,有時是為了防止發(fā)生系統(tǒng)過載
503——服務(wù)器過載或暫停維修
504——關(guān)口過載亥曹,服務(wù)器使用另一個關(guān)口或服務(wù)來響應(yīng)用戶邓了,等待時間設(shè)定值較長
505——服務(wù)器不支持或拒絕支請求頭中指定的HTTP版本
請求授權(quán)失敗,經(jīng)過查博客媳瞪,發(fā)現(xiàn)這個必須要傳入cookies才可以骗炉。