Python異步爬取知乎熱榜實(shí)例分享
一、錯(cuò)誤代碼:摘要和詳細(xì)的url獲取不到
import asyncio
from bs4 import BeautifulSoup
import aiohttp
?
headers={
? ? 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
? ? 'referer': 'https://www.baidu.com/s?tn=02003390_43_hao_pg&isource=infinity&iname=baidu&itype=web&ie=utf-8&wd=%E7%9F%A5%E4%B9%8E%E7%83%AD%E6%A6%9C'
}
async def getPages(url):
? ? async with aiohttp.ClientSession(headers=headers) as session:
? ? ? ? async with session.get(url) as resp:
? ? ? ? ? ? print(resp.status) ?# 打印狀態(tài)碼
? ? ? ? ? ? html=await resp.text()
? ? soup=BeautifulSoup(html,'lxml')
? ? items=soup.select('.HotList-item')
? ? for item in items:
? ? ? ? title=item.select('.HotList-itemTitle')[0].text
? ? ? ? try:
? ? ? ? ? ? abstract=item.select('.HotList-itemExcerpt')[0].text
? ? ? ? except:
? ? ? ? ? ? abstract='No Abstract'
? ? ? ? hot=item.select('.HotList-itemMetrics')[0].text
? ? ? ? try:
? ? ? ? ? ? img=item.select('.HotList-itemImgContainer img')['src']
? ? ? ? except:
? ? ? ? ? ? img='No Img'
? ? ? ? print("{}\n{}\n{}".format(title,abstract,img))
?
if __name__ == '__main__':
? ? url='https://www.zhihu.com/billboard'
? ? loop=asyncio.get_event_loop()
? ? loop.run_until_complete(getPages(url))
? ? loop.close()
二、查看JS代碼
發(fā)現(xiàn)詳細(xì)鏈接、圖片鏈接、問(wèn)題摘要等都在JS里面(CSDN的開(kāi)發(fā)者助手插件確實(shí)好用)

正則表達(dá)式獲取上述信息:

接下來(lái)就是詳細(xì)的代碼啦
import asyncio
import json
import re
import aiohttp
?
headers={
? ? 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
? ? 'referer': 'https://www.baidu.com/s?tn=02003390_43_hao_pg&isource=infinity&iname=baidu&itype=web&ie=utf-8&wd=%E7%9F%A5%E4%B9%8E%E7%83%AD%E6%A6%9C'
}
async def getPages(url):
? ? async with aiohttp.ClientSession(headers=headers) as session:
? ? ? ? async with session.get(url) as resp:
? ? ? ? ? ? print(resp.status) ?# 打印狀態(tài)碼
? ? ? ? ? ? html=await resp.text()
?
? ? regex=re.compile('"hotList":(.*?),"guestFeeds":')
? ? text=regex.search(html).group(1)
? ? # print(json.loads(text)) ? # json換成字典格式
? ? for item in json.loads(text):
? ? ? ? title=item['target']['titleArea']['text']
? ? ? ? question=item['target']['excerptArea']['text']
? ? ? ? hot=item['target']['metricsArea']['text']
? ? ? ? link=item['target']['link']['url']
? ? ? ? img=item['target']['imageArea']['url']
? ? ? ? if not img:
? ? ? ? ? ? img='No Img'
? ? ? ? if not question:
? ? ? ? ? ? question='No Abstract'
? ? ? ? print("Title:{}\nPopular:{}\nQuestion:{}\nLink:{}\nImg:{}".format(title,hot,question,link,img))
?
if __name__ == '__main__':
? ? url='https://www.zhihu.com/billboard'
? ? loop=asyncio.get_event_loop()
? ? loop.run_until_complete(getPages(url))
? ? loop.close()到此這篇關(guān)于Python異步爬取知乎熱榜實(shí)例分享的文章就介紹到這了,更多相關(guān)Python異步爬取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用textract實(shí)現(xiàn)從各種文件中提取文本信息
textract是一個(gè)強(qiáng)大的Python庫(kù),可以用于從各種文件格式中提取文本,本文將介紹textract的使用場(chǎng)景,以及一些常用的Python代碼案例,希望對(duì)大家有所幫助2024-01-01
利用Python進(jìn)行微服務(wù)架構(gòu)的監(jiān)控與日志分析
Python作為一種強(qiáng)大的編程語(yǔ)言,提供了豐富的工具和庫(kù),可以幫助我們實(shí)現(xiàn)對(duì)微服務(wù)架構(gòu)的監(jiān)控和日志分析,本文將介紹如何利用Python編寫(xiě)監(jiān)控腳本和日志分析程序,以便于更好地管理和維護(hù)微服務(wù)系統(tǒng)2024-03-03
python,pycharm的環(huán)境變量設(shè)置方式
這篇文章主要介紹了python,pycharm的環(huán)境變量設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
Python如何實(shí)現(xiàn)PDF隱私信息檢測(cè)
隨著越來(lái)越多的個(gè)人信息以電子形式存儲(chǔ)和傳輸,確保這些信息的安全至關(guān)重要,本文將介紹如何使用Python檢測(cè)PDF文件中的隱私信息,需要的可以參考下2025-02-02
Python常問(wèn)的100個(gè)面試問(wèn)題匯總(下篇)
這篇文章主要介紹了Python常問(wèn)的100個(gè)面試問(wèn)題匯總(下篇),文章內(nèi)容詳細(xì),簡(jiǎn)單易懂,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2023-01-01
最近Python有點(diǎn)火? 給你7個(gè)學(xué)習(xí)它的理由!
最近Python有點(diǎn)火?這篇文章主要為大家分享了7個(gè)你現(xiàn)在就該學(xué)習(xí)Python的理由,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Python?虛擬機(jī)字典dict內(nèi)存優(yōu)化方法解析
這篇文章主要為大家介紹了Python?虛擬機(jī)字典dict內(nèi)存優(yōu)化方法解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
在pandas中一次性刪除dataframe的多個(gè)列方法
下面小編就為大家分享一篇在pandas中一次性刪除dataframe的多個(gè)列方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04

