1from
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 asmplimport 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...