欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python采集C站高校信息實戰(zhàn)示例

 更新時間:2023年05月05日 11:41:47   作者:極客飛虎  
這篇文章主要為大家介紹了Python采集C站高校信息實戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

大家好,我們今天來爬取c站的高校名單,把其高校名單,成員和內(nèi)容數(shù)獲取下來,不過,我們發(fā)現(xiàn)這個網(wǎng)站比我們平時多了一個驗證,下面看看我是怎么解決的。

功能實現(xiàn)

話不多說,我們和平時一樣,發(fā)送我們的請求,按照平時,我們看看代碼怎么寫。

url = 'https://bizapi.csdn.net/community-cloud/v1/homepage/community/by/tag?deviceType=PC&tagId=37'
headers = {  
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'}  
response = requests.get(url=url,headers=headers)

我們在這里使用 requests 庫發(fā)送 GET 請求,并將 URL 和請求頭作為參數(shù)傳遞給 get 方法。請求的 URL 是 https://bizapi.csdn.net/community-cloud/v1/homepage/community/by/tag?deviceType=PC&tagId=37,表示查詢社區(qū)根據(jù)標簽分類的數(shù)據(jù)。請求頭包含了 User-Agent 和 Accept 字段,分別表示客戶端的 User-Agent 和 Accept 協(xié)議類型。

不過我們會發(fā)現(xiàn),我們得不到數(shù)據(jù),就說明我們被反爬了,我嘗試了很多次,我們發(fā)現(xiàn)它做了一個驗證。

headers = {  
'accept': 'application/json, text/plain, */*',  
'origin': 'https://bbs.csdn.net',  
'referer': 'https://bbs.csdn.net/college?utm_source=csdn_bbs_toolbar&spm=1035.2022.3001.8850&category=37',  
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',  
'x-ca-key': '203899271',  
'x-ca-nonce': '13b10c23-6a9b-423e-92a7-b114bc2c7f48',  
'x-ca-signature': 'Hhnf/RUARDM2jddNAkl2tJ6hpXfweWbY1U4/yh6FCZM=',  
'x-ca-signature-headers': 'x-ca-key,x-ca-nonce',  
}

我們這里科普一下,x-ca-signature 是對請求內(nèi)容的簽名,用于驗證請求的完整性和可信性。 簽名通常是通過使用私鑰和一種哈希算法(如 SHA256)對請求內(nèi)容進行計算得到的。 如果請求頭中出現(xiàn)這三個參數(shù),放心,是為了反爬用的,當然也可以用于限制請求頻率,防止惡意攻擊。

在解決該反爬問題時,第一步就是要找到他們的加密點。尋找 x-ca-key、x-ca-nonce、x-ca-signature 加密位置這一步主要看你對開發(fā)者工具的使用熟練程度了,尋找任意一個攜帶該請求頭參數(shù)的請求,然后添加相應(yīng)斷點。通過請求地址中的部分關(guān)鍵字,即可添加 XHR 斷點。再次刷新頁面,可進入斷點中,一般會停留在send()函數(shù)位置。 下面的步驟就是比較枯燥的了,需要一點點的解密,例如在本函數(shù)頭部找到headers,發(fā)現(xiàn)其參數(shù) x-ca-key、x-ca-nonce、x-ca-signature 已經(jīng)被賦值。

這里我們沒有做多頁爬蟲,就沒有去解密了,感興趣的朋友自己去嘗試。

內(nèi)容獲取

我們拿到了數(shù)據(jù),接下來就可以提取內(nèi)容了,我們看看代碼怎么寫,這里就很簡單了。

data =responses.json()['data']  
for list in data:   
    tagName = list['tagName']  
    list_url= list['url']  
    res = requests.get(list_url)  
    num = re.findall('<div title="(\d+)"',res.text)  
    print(tagName,list_url,num)

我們這里使用 responses.json()['data'] 讀取 API 響應(yīng) JSON 數(shù)據(jù),并在一個數(shù)組中提取數(shù)據(jù)。然后,它使用一個 for 循環(huán)遍歷數(shù)組中的每個元素,提取 tagName 和 url 兩個字段,并使用 requests.get() 發(fā)送 GET 請求獲取數(shù)據(jù)。最后,它使用正則表達式從響應(yīng)文本中提取 num 數(shù)據(jù),并將其打印到控制臺上。

總結(jié)

我們這樣就獲取到了內(nèi)容,本文僅供學習,更多關(guān)于Python采集C站高校信息的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python實現(xiàn)PDF文字識別提取并寫入CSV文件

    Python實現(xiàn)PDF文字識別提取并寫入CSV文件

    這篇文章主要是和大家分享一個Python實現(xiàn)PDF文字識別與提取并寫入?CSV文件的腳本。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-03-03
  • Python機器學習實戰(zhàn)之k-近鄰算法的實現(xiàn)

    Python機器學習實戰(zhàn)之k-近鄰算法的實現(xiàn)

    k-近鄰算法采用測量不同特征值之間的距離方法進行分類。這篇文章主要為大家介紹了如何通過python實現(xiàn)K近鄰算法,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • python模仿網(wǎng)頁版微信發(fā)送消息功能

    python模仿網(wǎng)頁版微信發(fā)送消息功能

    這篇文章主要介紹了python模仿網(wǎng)頁版微信發(fā)送消息功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Django框架模板介紹

    Django框架模板介紹

    今天小編就為大家分享一篇關(guān)于Django框架模板介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Python .py生成.pyd文件并打包.exe 的注意事項說明

    Python .py生成.pyd文件并打包.exe 的注意事項說明

    這篇文章主要介紹了Python .py生成.pyd文件并打包.exe 的注意事項說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 淺談如何重構(gòu)冗長的Python代碼

    淺談如何重構(gòu)冗長的Python代碼

    這篇文章主要介紹了淺談如何重構(gòu)冗長的Python代碼,編寫干凈的?Pythonic?代碼就是盡可能使其易于理解,但又簡潔,過長的代碼如何做到簡潔高效,需要的朋友可以參考下
    2023-04-04
  • Python for Informatics 第11章之正則表達式(四)

    Python for Informatics 第11章之正則表達式(四)

    這篇文章主要介紹了Python for Informatics 第11章之正則表達式(四) 的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • Python批處理更改文件名os.rename的方法

    Python批處理更改文件名os.rename的方法

    今天小編就為大家分享一篇Python批處理更改文件名os.rename的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python配置文件yaml的用法詳解

    Python配置文件yaml的用法詳解

    YAML是一種直觀的能夠被電腦識別的的數(shù)據(jù)序列化格式,容易被人類閱讀,并且容易和腳本語言交互。本文將詳細介紹一下Python中yaml文件的用法,需要的可以參考一下
    2022-03-03
  • Python實現(xiàn)視頻下載與合成的示例代碼

    Python實現(xiàn)視頻下載與合成的示例代碼

    這篇文章主要為大家詳細介紹了Python是如何實現(xiàn)視頻的下載以及合成的,文中的實現(xiàn)步驟講解詳細,感興趣的小伙伴快跟隨小編一起學習一下吧
    2022-04-04

最新評論