日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

bs4爬取的时候有两个标签相同_10分钟用Python爬取最近很火的复联4影评

發布時間:2025/3/12 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bs4爬取的时候有两个标签相同_10分钟用Python爬取最近很火的复联4影评 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

《復仇者聯盟4:終局之戰》已經上映快三個星期了,全球票房破24億美元,國內票房破40億人民幣。

雖然現在熱度逐漸下降,但是我們還是恬不知恥地來蹭一蹭熱度。上映伊始《復聯4》的豆瓣評分曾破了9分。

后來持續走低,現在《復聯4》的評分穩定在8.6分。雖然豆瓣日常被人吐槽注水嚴重,惡意評分很多,但是由于它好爬鴨~,我們還是選擇豆瓣作為爬取對象。豆瓣的長評論有文字和圖片等其它元素,簡單起見,這次只爬短評。

?在瀏覽器中查看豆瓣關于復聯4的短評,先來看看url的結構:

https://movie.douban.com/subject/26100958/comments?start=20&limit=20&sort=new_score&status=P

可見,我們可以通過修改start的值進入不同的頁面:

右鍵查看源代碼可以看到瀏覽器獲取到的html頁面代碼。Ctrl F搜索第一條影評的關鍵詞,快速定位到影評的標簽:

可以看到影評內容在span標簽中,class為“short”。

總覽一下爬取內容的步驟:

1) 訪問url,獲取html頁面文本,這一步我們要用到的是requests模塊。

2) 解析返回的文本,提取出爬蟲內容,這一步要用的是beautifulSoup模塊。

這兩個模塊都可以通過pip直接下載。

首先是main函數:

def main(): discuss = [] a = 0 for i in range(0,100,20): url = 'https://movie.douban.com/subject/26100958/comments?start='+ str(i) +'&limit=20&sort=new_score&status=P' HTMLpage = getHTML(url) #print(HTMLpage) for t in parseHTML(HTMLpage): discuss.append(t) for i in discuss: print(str(a) + ':' + i)# print(i)????????a?=?a?+?1

由于豆瓣一頁顯示20條影評,我們爬前100條,所以這里訪問了前5個頁面:

def getHTML(url): try: r = requests.get(url) r.raise_for_status()print("get html successfully") r.encoding = 'utf-8' #print(r.text) return r.text except:????????return?""

在getHTML函數中,我們申請訪問目標頁面,并返回html頁面文本。注意這里應該將編碼方式設置為utf-8,實測如果設置成r.encoding = r.apparent_encoding,程序并不能猜測到正確的編碼方式。

當r.raise_for_status() 沒有拋出異常時,程序通知我們獲取html成功。如果有異常,返回空字符串。

下一步是解析:

如前所述影評是class為short的span,所以可以直接使用bs4的find_all()函數得到一個含有所有影評的tag的列表。我們只需要把tag中的文字提取出來就可以返回到主函數了。

首先要生成一個beautifulSoup類的對象,使用html的解析器。html頁面是樹狀分布的,可以通過各種樹的遍歷找到我們需要的標簽,這里bs4提供了一個簡單粗暴的find_all,可以直接使用。

find_all()函數返回的是一個保存著tag的列表。

def parseHTML(html): try: soup = BeautifulSoup(html,"html.parser") A = soup.find_all('span',attrs = {'class':'short'}) B = [] for i in A: B.append(i.get_text()) return B except:????????return?[]

用get_text函數去掉span標簽,只留下內容的文本,加入到B列表里。然后就可以返回了。同理,如果出錯了,返回空列表。

好了以上就是一個非常簡單的小爬蟲,通過修改爬取的數量可以爬取任意頁面的評論。當然了后續還會對這些數據進行一些有趣的分析,請關注我們。同時因為作者本人能力有限,本系列可能又要無限托更了/呲牙

下附完整版代碼和運行結果【代碼下載移步留言區】

import requestsfrom bs4 import BeautifulSoupdef getHTML(url): try: r = requests.get(url) r.raise_for_status() print("get html successfully") r.encoding = 'utf-8' #print(r.text) return r.text except: return ""def parseHTML(html): try: soup = BeautifulSoup(html,"html.parser") A = soup.find_all('span',attrs = {'class':'short'}) B = [] for i in A: B.append(i.get_text()) return B except: return []def main(): discuss = [] a = 0 for i in range(0,100,20): url = 'https://movie.douban.com/subject/26100958/comments?start='+ str(i) +'&limit=20&sort=new_score&status=P' HTMLpage = getHTML(url) #print(HTMLpage) for t in parseHTML(HTMLpage): discuss.append(t) for i in discuss: print(str(a) + ':' + i)# print(i) a = a + 1 if __name__ == "__main__":main()

運行結果:

注:本文作者來自小編一同學。

他的公眾號:木白瞎說。大家可以關注一下。

掃碼入QQ群,獲取更多的運籌優化算法及人工智能算法學習資料

↓↓↓

注:微信群請在公眾號菜單點擊

資源下載->微信粉絲群

獲取最新群邀請鏈接。

總結

以上是生活随笔為你收集整理的bs4爬取的时候有两个标签相同_10分钟用Python爬取最近很火的复联4影评的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。