Python采集某度貼吧排行榜實(shí)戰(zhàn)示例
數(shù)據(jù)采集
我們上一篇介紹了,如何采集電影評論,看看這個電影好不好看.今天,我們來采集大家熟悉的百度貼吧的排行榜。
發(fā)送請求
我們首先確定我們的目標(biāo)網(wǎng)址,對我們需要獲取的數(shù)據(jù)。

我們要把每一行的數(shù)據(jù)獲取下來,我們接下來用到開發(fā)者工具。我們看評論是在什么位置。是不是在網(wǎng)頁源代碼中。接下來,我們發(fā)送請求,獲取網(wǎng)頁源代碼。

我們這里可以看到,我們選擇一個css選擇器,取匹配我們要的數(shù)據(jù)。
url = f'https://tieba.baidu.com/sign/index?kw=%B0%B2%C7%EC%CA%A6%B7%B6%D1%A7%D4%BA&type=2&pn=1' # 158 res = requests.get(url)
代碼使用requests庫的get()函數(shù)來請求這個URL,并將結(jié)果存儲在變量res中。
解析數(shù)據(jù)
我們還可以獲取其他信息,比如講,排名,學(xué)校,人數(shù),簽到率之類的。
selector = parsel.Selector(res.text)
info_lists = selector.css('.j_rank_row')
這段代碼首先導(dǎo)入了parsel庫,然后使用Selector函數(shù)創(chuàng)建了一個選擇器對象selector。res.text是從響應(yīng)中獲取的文本內(nèi)容,css()方法用于選擇CSS樣式,.j_rank_row是CSS選擇器,用于選擇所有.j_rank_row類的元素。
接下來,代碼使用selector.css()方法選擇所有.j_rank_row類的元素,并將它們存儲在info_lists變量中。這些元素將成為BeautifulSoup對象soup的一部分。
獲取內(nèi)容
上面我們已經(jīng)得到了.j_rank_row位置,接下來,就是把內(nèi)容獲取下來。我們看看代碼怎么寫。
for info_list in info_lists:
rank = info_list.css('.rank_index div::text').get()
# print(rank)
name = info_list.css('.forum_name a::text').get()
signin = info_list.css('.forum_sign_num::text').get()
theTotalNumberOf = info_list.css('.forum_member::text').get()
signInToRate = info_list.css('.forum_sign_rate::text').get()
這段代碼將遍歷info_lists列表中的每個元素,并使用CSS選擇器選擇.rank_index類的元素,然后使用.rank_index div::text選擇.rank_index類的文本內(nèi)容,使用.forum_name a::text選擇.forum_name類的文本內(nèi)容,使用.forum_sign_num::text選擇.forum_sign_num類的文本內(nèi)容,使用.forum_member::text選擇.forum_member類的文本內(nèi)容,使用.forum_sign_rate::text選擇.forum_sign_rate類的文本內(nèi)容。
然后,代碼將獲取每個元素的.rank_index div::text文本內(nèi)容,并使用.get()方法獲取其中的.rank_index值。接下來,代碼將獲取每個元素的.forum_name a::text文本內(nèi)容,并使用.get()方法獲取其中的.forum_name值。接下來,代碼將獲取每個元素的.forum_sign_num::text文本內(nèi)容,并使用.get()方法獲取其中的.forum_sign_num值。接下來,代碼將獲取每個元素的.forum_member::text文本內(nèi)容,并使用.get()方法獲取其中的.forum_member值。最后,代碼將獲取每個元素的.forum_sign_rate::text文本內(nèi)容,并使用.get()方法獲取其中的.forum_sign_rate值。

獲取內(nèi)容
我們把獲取到的內(nèi)容保存成csv文件,之前我們說了很多遍,直接上代碼。
f = open('百度貼吧排行榜.csv', mode='a', encoding='utf-8_sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['排名', '學(xué)校', '簽到人數(shù)', '吧會員數(shù)', '簽到率'])
csv_writer.writeheader()
這段代碼打開了一個名為“百度貼吧排行榜.csv”的文件,并創(chuàng)建了一個名為“csv_writer”的CSV寫入器對象。mode='a'參數(shù)指定文件以追加模式打開,encoding='utf-8_sig'參數(shù)指定文件編碼為UTF-8-sig,newline=''參數(shù)指定行尾符為空字符串。
然后,csv_writer.writeheader()方法被調(diào)用,它將寫入CSV文件的標(biāo)題行。這些標(biāo)題行包括排名、學(xué)校、簽到人數(shù)、吧會員數(shù)和簽到率。
我們把上面的數(shù)據(jù)保存成字典的格式,寫入csv文件。
dit = {
'排名': rank,
'學(xué)校': name,
'簽到人數(shù)': signin,
'吧會員數(shù)': theTotalNumberOf,
'簽到率': signInToRate,
}
# print(dit)
csv_writer.writerow(dit)
這段代碼創(chuàng)建了一個字典dit,其中包含了每個元素的值。然后,它使用csv_writer.writerow()方法將字典寫入CSV文件中。
具體來說,這段代碼首先打開了一個名為“百度貼吧排行榜.csv”的文件,并創(chuàng)建了一個名為“csv_writer”的CSV寫入器對象。然后,它使用csv_writer.writeheader()方法寫入了CSV文件的標(biāo)題行,包括排名、學(xué)校、簽到人數(shù)、吧會員數(shù)和簽到率。最后,它使用csv_writer.writerow()方法將字典dit寫入CSV文件中。

總結(jié)
本文介紹了如何采集百度貼吧排行榜的數(shù)據(jù)。首先,我們確定了目標(biāo)網(wǎng)址并使用開發(fā)者工具獲取了網(wǎng)頁源代碼。然后,我們選擇了一個CSS選擇器并使用requests.get()函數(shù)請求了目標(biāo)網(wǎng)址。接下來,我們使用parsel庫解析了網(wǎng)頁源代碼,并使用Selector函數(shù)選擇了所有包含評論的.j_rank_row類的元素。最后,我們使用info_lists變量存儲了每個元素的值,并使用print()函數(shù)將數(shù)據(jù)打印出來。
以上就是Python采集度貼吧排行榜實(shí)戰(zhàn)示例的詳細(xì)內(nèi)容,更多關(guān)于Python采集度貼吧排行榜的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)pdf轉(zhuǎn)word詳細(xì)代碼
在日常工作中,我們經(jīng)常會遇到需要將PDF文件轉(zhuǎn)換成Word文件的需求。雖然市面上有許多PDF轉(zhuǎn)Word的工具,但是它們通常需要付費(fèi)或者有轉(zhuǎn)換后的格式問題,這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)pdf轉(zhuǎn)word的相關(guān)資料,需要的朋友可以參考下2023-09-09
Python通用函數(shù)實(shí)現(xiàn)數(shù)組計算的方法
數(shù)組的運(yùn)算可以進(jìn)行加減乘除,同時也可以將這些算數(shù)運(yùn)算符進(jìn)行任意的組合已達(dá)到效果。這篇文章主要介紹了Python通用函數(shù)實(shí)現(xiàn)數(shù)組計算的代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2019-06-06
python實(shí)現(xiàn)批量修改圖片格式和尺寸
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)批量修改圖片格式和尺寸的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06
django連接數(shù)據(jù)庫獲取數(shù)據(jù)的簡單步驟記錄
數(shù)據(jù)庫中各種表結(jié)構(gòu)已經(jīng)創(chuàng)建好了,甚至連數(shù)據(jù)都有了,此時我要用Django管理這個數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于django連接數(shù)據(jù)庫獲取數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-07-07
Python中g(shù)lob庫實(shí)現(xiàn)文件名的匹配
本文主要主要介紹了Python中g(shù)lob庫實(shí)現(xiàn)文件名的匹配,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06
python實(shí)現(xiàn)幾種歸一化方法(Normalization Method)
這篇文章主要介紹了python實(shí)現(xiàn)幾種歸一化方法(Normalization Method),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
python編輯用戶登入界面的實(shí)現(xiàn)代碼
這篇文章主要介紹了python編輯用戶登入界面的實(shí)現(xiàn)代碼,非常不錯,代碼簡單易懂,具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07

