爬取豆瓣網影評資料並進行簡單分析與展示

2022-06-27 13:12:09 字數 3747 閱讀 1700

1

from

urllib import request

2from

bs4 import beautifulsoup

3 import matplotlib as

mpl4 import matplotlib.pyplot as

plt5 import pandas as

pd6 import numpy asnp7

import requests

8import re910

"""11

生成分頁**

12n:需要生成的頁數

13"""

14def get_urls(n):

15 urls=

16for i in range(0

,n):

17 u='

'+str(i*20)+'

&limit=20&sort=new_score&status=p'18

19return

urls

20 #get_urls(5)21

22"""

23【從分頁採集資料】

24u:輸入分頁**

25"""

26def get_informations(u):

27 headers =

29 r = requests.get(u, headers=headers)

30 soup = beautifulsoup(r.text, '

lxml')

31 ims = soup.find_all('

div', class_='

comment-item')

3233

# print(ims)

34 data =

3536

for i in

ims:

37 dic ={}

38 dic['

使用者名稱'] = i.find('

span

', class_='

comment-info

').find('

a', class_=""

).text

39 mystar = i.find('

span

', class_='

comment-info

').find('

span

').next_sibling.next_sibling

40 mystar =str(mystar)

41 t = re.findall(r'

\d+'

, mystar)

42 dic['

所評星級

'] = str(t[0

])43 dic['

'] = i.find('

span

', class_='

short

').text

44 dic['

'] = i.find('

span

', class_='

votes

').text

45 dic['

'] = i.find('

span

', class_='

comment-time

').text.strip()

4647

return

data

48 #get_informations('

0&limit=20&sort=new_score&status=p')

4950

"""51

【從每一頁採取所有資料】

52n:需要採集的頁數

53"""

54def get_alldata(n):

55 alldata =

56for u in

get_urls(n):

57alldata.extend(get_informations(u))

58"""

59清洗資料

60 轉換資料型別以及星級去除%

61.loc就是索引,逗號前面是行索引,逗號後面是列索引

62"""

63 df.loc[:, '

所評星級

'] = df['

所評星級

'].astype('

float')

64 df.loc[:, '

'] = df['

'].astype('

int')65

66return

pd.dataframe(alldata)

6768

"""69

70"""

71#儲存資料到《少年的你》影評.csv

72 df = get_alldata(5

)73 df.to_csv('

《少年的你》影評.csv

',index=false,encoding='

utf-8')

74print(df)

7576

"""pandas繪圖:直方圖,bins是畫素

"""77 df['

星級'].hist(bins=20)

#str.strip()

s1='

\nabcdefg\n

'print(s1.strip())

1

字元竄:dataframe資料框裡邊的name列為字元竄形式23

清除字元竄左側是空值:

45 newname=df['

name

'].str.lstrip()67

8刪除右側:

9 newname=df['

name

'].str.rstrip()

1011

12刪除全部:

13 newname=df['

name

'].str.strip()

next_sibling

「」「class='

comment-time

'>ads<\p>

class='

comment-time

'>bdg<\p>

class='

comment-time

'>fgh<\p >可以通過next_sibling

」「」tsecond = i.find('

p',class_='

comment-time

').next_sibling.next_sibling

tsecondtext = i.find('p',class_='comment-time').next_sibling.next_sibling.text

import matplotlib as

mplimport matplotlib.pyplot

asplt

mpl.rcparams[

'font.sans-serif

'] = ['

kaiti']

mpl.rcparams[

'font.serif

'] = ['

kaiti

']

python爬蟲實戰 爬取豆瓣影評資料

爬取豆瓣影評資料步驟 1 獲取網頁請求 2 解析獲取的網頁 3 提速資料 4 儲存檔案 1 匯入需要的庫 import urllib.request from bs4 import beautifulsoup 隨機數的庫 import random 時間庫 import time 庫 import ...

爬取星座運勢資料並進行詞頻分析

試著自己做了下爬蟲,從星座屋 爬取十二星座30天的運勢資料。import requests from bs4 import beautifulsoup import pandas as pd 獲取12星座的 urll r requests.get url fortune aries soup bea...

python練習簡單爬取豆瓣網top250電影資訊

因為有的電影詳情裡沒有影片的又名,所以沒有爬取電影的又名。基本思路 爬取top250列表頁展示中電影的排行榜排名,電影詳情鏈結,電影名稱。然後通過電影鏈結進入到詳情頁,獲取詳情頁的原始碼,再進行爬取,爬取後的資料儲存在字典中,通過字典儲存在mongo資料庫中的。from urllib.request...