Python爬蟲學習筆記(1)爬取知乎使用者資訊

江先生發表於2018-01-12

生苦短,我用Python

最近一段時間因為大資料分析以及AI的興起,所以想著學習一下Python,剛接觸Python就被其優雅、簡潔、明確的語法和強大的第三方庫所吸引。我的理念一直是學習一門語言,必須在實踐中去學習,在實踐中不斷解決問題而熟悉語法以及深刻理解。

第一次爬取得資訊是知乎的某一使用者所關注的人的公開資訊。

因為本人是新手一枚,所以使用Python的IDE-PyCharm。另一原因也因為我之前是用C#的,所以對於強大的IDE情有獨鍾。

1、學習任何一門語言,你都必須安裝其對應的工作環境,Python也不例外,在windows上安裝Python很簡單,只需要去官方網站下載對應的安裝程式:https://www.python.org/downloads/release/python-363/;然後執行安裝包:

preview

特別注意:一定要勾上Add Python 3.6 to PATH,然後點Install Now就行了

安裝完之後開啟命令提示符視窗,輸入python回車,若出現以下資訊,則安裝成功。

Python爬蟲學習筆記(1)爬取知乎使用者資訊

2、安裝Pycharm:PyCharm: Python IDE for Professional Developers by JetBrains;

3、開啟Pycharm,新建一個專案,再新建一個Python檔案,字尾名為.py.

4、開啟知乎首頁-->登陸-->搜尋到一個大V,用谷歌瀏覽器分析點選關注了哪些人後的請求,通過分析:查詢他關注的人的請求連結:www.zhihu.com/api/v4/memb…*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset=40&limit=20

preview

通過觀察嘗試分析後可知:offset=40是偏移量,通過改變這個值可以實現分頁的效果。

知乎是做了反爬蟲的措施的,所以我們要想爬取知乎資訊,還必須要設定請求頭,下面我們來分析請求頭:

Python爬蟲學習筆記(1)爬取知乎使用者資訊

圖片中紅箭頭所指就是請求必須需要的值,

authorization:是身份認證資訊,每個使用者登入後都會產生各自的身份認證資訊。

User-Agent:是驗證請求是來自正常的瀏覽器訪問

最終程式碼如下:

import requests
import pandas as pd
import time
headers={
    'authorization':'',#此處填寫你自己的身份驗證資訊
    'User-Agent':''#此處填寫你自己瀏覽器的User-Agent
}
user_data = []
def get_user_data(page):
    for i in range(page):#翻頁
        url = 'https://www.zhihu.com/api/v4/members/excited-vczh/followees?include=data%5B*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset={}&limit=20'.format(i*20)
        response = requests.get(url, headers=headers).json()['data']
        user_data.extend(response) #把response資料新增進user_data
        print('正在爬取第%s頁' % str(i+1))
        time.sleep(1) #設定爬取網頁的時間間隔為1秒

if __name__ == '__main__':
    get_user_data(10)
    df = pd.DataFrame.from_dict(user_data)#以字典儲存資料
    df.to_csv('zhihu.csv',encoding='utf_8_sig')#儲存到使用者名稱為zhihu的csv檔案中,encoding='utf_8_sig'引數是為了解決中文亂碼的問題
    print(df)複製程式碼


相關文章