Python采集某度貼吧排行榜實(shí)戰(zhàn)示例
數(shù)據(jù)采集
我們上一篇介紹了,如何采集電影評(píng)論,看看這個(gè)電影好不好看.今天,我們來采集大家熟悉的百度貼吧的排行榜。
發(fā)送請(qǐng)求
我們首先確定我們的目標(biāo)網(wǎng)址,對(duì)我們需要獲取的數(shù)據(jù)。
我們要把每一行的數(shù)據(jù)獲取下來,我們接下來用到開發(fā)者工具。我們看評(píng)論是在什么位置。是不是在網(wǎng)頁(yè)源代碼中。接下來,我們發(fā)送請(qǐng)求,獲取網(wǎng)頁(yè)源代碼。
我們這里可以看到,我們選擇一個(gè)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
庫(kù)的get()
函數(shù)來請(qǐng)求這個(gè)URL,并將結(jié)果存儲(chǔ)在變量res
中。
解析數(shù)據(jù)
我們還可以獲取其他信息,比如講,排名,學(xué)校,人數(shù),簽到率之類的。
selector = parsel.Selector(res.text) info_lists = selector.css('.j_rank_row')
這段代碼首先導(dǎo)入了parsel
庫(kù),然后使用Selector
函數(shù)創(chuàng)建了一個(gè)選擇器對(duì)象selector
。res.text
是從響應(yīng)中獲取的文本內(nèi)容,css()
方法用于選擇CSS樣式,.j_rank_row
是CSS選擇器,用于選擇所有.j_rank_row
類的元素。
接下來,代碼使用selector.css()
方法選擇所有.j_rank_row
類的元素,并將它們存儲(chǔ)在info_lists
變量中。這些元素將成為BeautifulSoup對(duì)象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
列表中的每個(gè)元素,并使用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)容。
然后,代碼將獲取每個(gè)元素的.rank_index div::text
文本內(nèi)容,并使用.get()
方法獲取其中的.rank_index
值。接下來,代碼將獲取每個(gè)元素的.forum_name a::text
文本內(nèi)容,并使用.get()
方法獲取其中的.forum_name
值。接下來,代碼將獲取每個(gè)元素的.forum_sign_num::text
文本內(nèi)容,并使用.get()
方法獲取其中的.forum_sign_num
值。接下來,代碼將獲取每個(gè)元素的.forum_member::text
文本內(nèi)容,并使用.get()
方法獲取其中的.forum_member
值。最后,代碼將獲取每個(gè)元素的.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ù)', '吧會(huì)員數(shù)', '簽到率']) csv_writer.writeheader()
這段代碼打開了一個(gè)名為“百度貼吧排行榜.csv”的文件,并創(chuàng)建了一個(gè)名為“csv_writer”的CSV寫入器對(duì)象。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ù)、吧會(huì)員數(shù)和簽到率。
我們把上面的數(shù)據(jù)保存成字典的格式,寫入csv文件。
dit = { '排名': rank, '學(xué)校': name, '簽到人數(shù)': signin, '吧會(huì)員數(shù)': theTotalNumberOf, '簽到率': signInToRate, } # print(dit) csv_writer.writerow(dit)
這段代碼創(chuàng)建了一個(gè)字典dit
,其中包含了每個(gè)元素的值。然后,它使用csv_writer.writerow()
方法將字典寫入CSV文件中。
具體來說,這段代碼首先打開了一個(gè)名為“百度貼吧排行榜.csv”的文件,并創(chuàng)建了一個(gè)名為“csv_writer”的CSV寫入器對(duì)象。然后,它使用csv_writer.writeheader()
方法寫入了CSV文件的標(biāo)題行,包括排名、學(xué)校、簽到人數(shù)、吧會(huì)員數(shù)和簽到率。最后,它使用csv_writer.writerow()
方法將字典dit
寫入CSV文件中。
總結(jié)
本文介紹了如何采集百度貼吧排行榜的數(shù)據(jù)。首先,我們確定了目標(biāo)網(wǎng)址并使用開發(fā)者工具獲取了網(wǎng)頁(yè)源代碼。然后,我們選擇了一個(gè)CSS選擇器并使用requests.get()
函數(shù)請(qǐng)求了目標(biāo)網(wǎng)址。接下來,我們使用parsel
庫(kù)解析了網(wǎng)頁(yè)源代碼,并使用Selector
函數(shù)選擇了所有包含評(píng)論的.j_rank_row
類的元素。最后,我們使用info_lists
變量存儲(chǔ)了每個(gè)元素的值,并使用print()
函數(shù)將數(shù)據(jù)打印出來。
以上就是Python采集度貼吧排行榜實(shí)戰(zhàn)示例的詳細(xì)內(nèi)容,更多關(guān)于Python采集度貼吧排行榜的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python中Django框架下的staticfiles使用簡(jiǎn)介
這篇文章主要介紹了Python中Django框架下的staticfiles使用簡(jiǎn)介,staticfiles是一個(gè)幫助Django管理靜態(tài)資源的工具,需要的朋友可以參考下2015-05-05Python open讀寫文件實(shí)現(xiàn)腳本
Python中文件操作可以通過open函數(shù),這的確很像C語言中的fopen。通過open函數(shù)獲取一個(gè)file object,然后調(diào)用read(),write()等方法對(duì)文件進(jìn)行讀寫操作。2008-09-09python爬取全國(guó)火鍋店數(shù)量并可視化展示
這篇文章主要介紹了python爬取全國(guó)火鍋店數(shù)量并可視化展示,文章通過獲取全國(guó)不同城市火鍋店數(shù)量情況,并將這些數(shù)據(jù)進(jìn)行可視化展示,下文詳細(xì)內(nèi)容介紹,需要的小伙伴可以參考2022-05-05Python 的 sum() Pythonic 的求和方法詳細(xì)
Python 的內(nèi)置函數(shù)sum()是一種對(duì)數(shù)值列表求和的有效且Pythonic 的方法。將多個(gè)數(shù)字相加是許多計(jì)算中常見的中間步驟,因此sum()對(duì)于 Python 程序員來說是一個(gè)非常方便的工具。下面文章就讓我們一起來看具體內(nèi)容吧2021-10-10python pandas合并Sheet,處理列亂序和出現(xiàn)Unnamed列的解決
這篇文章主要介紹了python pandas合并Sheet,處理列亂序和出現(xiàn)Unnamed列的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-0310行Python代碼就能實(shí)現(xiàn)的八種有趣功能詳解
Python憑借其簡(jiǎn)潔的代碼,贏得了許多開發(fā)者的喜愛,因此也就促使了更多開發(fā)者用Python開發(fā)新的模塊。面我們來看看,我們用不超過10行代碼能實(shí)現(xiàn)些什么有趣的功能吧2022-03-03