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

2021-09-25 10:54:28 字數 2683 閱讀 9987

試著自己做了下爬蟲,從星座屋**爬取十二星座30天的運勢資料。

import requests

from bs4 import beautifulsoup

import pandas as pd

#獲取12星座的**

urll=''

r=requests.get(url='/fortune/aries/')

soup=beautifulsoup(r.text,'lxml')

a=soup.find('div',class_="card_xingzuo").find_all('a')

urllst=

for each in a:

#獲取每個星座30天的資料

datalst=

for ui in urllst:

ri=requests.get(url=ui)

soupi=beautifulsoup(ri.text,'lxml')

alst=soupi.find('div',class_="lday").find_all('a')

urllst2=

for each in alst:

for u in urllst2:

r=requests.get(url=u)

soup=beautifulsoup(r.text,'lxml')

dic={}

lilst1=soup.find('div',class_="c_main")

if lilst1 is none: #獅子座有乙個網頁是空的

continue

else:

lilst=lilst1.find_all('li')

dic['星座']=lilst1.find('h4').text

for i in range(4):

dic[lilst[i].text.replace(':','')]=lilst[i].find('em').get('style').split(':')[-1].replace(';','')

for i in range(4,10):

dic['字段'+str(i)]=lilst[i].text

p=soup.find('div',class_="c_cont").find_all('p')

for i in range(5):

dic[p[i].find('strong',class_="p"+str(i+1)).text+'_文字']=p[i].find('span').text

df=pd.dataframe(datalst)

#資料清洗

df['健康指數']=df['欄位4'].str.split(':').str[-1]

df['商談指數']=df['欄位5'].str.split(':').str[-1]

df['幸運顏色']=df['欄位6'].str.split(':').str[-1]

df['幸運數字']=df['欄位7'].str.split(':').str[-1]

df['速配星座']=df['欄位8'].str.split(':').str[-1]

df['短評']=df['欄位9'].str.split(':').str[-1]

df['星座名稱']=df['星座'].str.split('運勢').str[0]

df['日期']=df['星座'].str.split('運勢').str[-1]

df.drop(['欄位4'],axis=1,inplace=true)

df.drop(['欄位5'],axis=1,inplace=true)

df.drop(['欄位6'],axis=1,inplace=true)

df.drop(['欄位7'],axis=1,inplace=true)

df.drop(['欄位8'],axis=1,inplace=true)

df.drop(['欄位9'],axis=1,inplace=true)

df.drop(['星座'],axis=1,inplace=true)

#匯出為excel**

df.to_excel('c:/users/del/desktop/星座運勢資料.xlsx')

#詞頻分析

pl_cnz=df[df['星座名稱']=='**座']['綜合運勢_文字']

words=''.join(pl_cnz.values.tolist()) #將**座的綜合運勢拼成一段話

words_clh='適合/v 放鬆/v 的/u 一天/r ,/w 今天/nt ........' ###句子太長,不粘過來了

wordslst=words_clh.split(' ')

word_df=pd.dataframe()

word_df['詞']=word_df['詞性拆分'].str.split('/').str[0]

word_df['詞性']=word_df['詞性拆分'].str.split('/').str[1]

#統計各種名詞出現的次數/頻率

mc=word_df[word_df['詞性']=='n']

word_count=mc['詞'].value_counts()

#匯出為excel**

word_count.to_excel('c:/users/del/desktop/result.xlsx')

詞云分析

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

1 from urllib import request 2from bs4 import beautifulsoup 3 import matplotlib as mpl4 import matplotlib.pyplot as plt5 import pandas as pd6 import n...

python 爬取疫情資料並進行視覺化

課題 爬取疫情資料 進行視覺化 第一步 爬蟲爬取疫情資料 第二步 實現資料的視覺化 import time import json import requests import pandas as pd url r int time.time 1000 html requests.get url h...

爬拉勾網並進行視覺化分析

爬取動態網頁 拉勾網 拉勾網通過ajax後台資料動態載入。爬取 爬蟲 崗位的關鍵字,並存入到本地mongodb中,通過pandas讀取爬取的崗位資料視覺化展示。加入了反爬cookies,需攜帶cookies才返回需要的資料,需登入後獲取cookies傳送post請求。import requests ...