爬取星座运势数据并进行词频分析

试着自己做了下爬虫,从星座屋网站爬取十二星座30天的运势数据。

import requests
from bs4 import BeautifulSoup
import pandas as pd

#获取12星座的网址
urll='http://www.xzw.com'
r=requests.get(url='http://www.xzw.com/fortune/aries/')
soup=BeautifulSoup(r.text,'lxml')
a=soup.find('div',class_="card_xingzuo").find_all('a')
urllst=[]
for each in a:
    urllst.append(urll+each.get('href'))
   
#获取每个星座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:
        urllst2.append(urll+each.get('href'))
    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
        datalst.append(dic)

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({'词性拆分':wordslst})
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')

导出为excel表格之后,复制result.xlsx的内容,通过在线制作词云分析。
得到下面的结果:
爬取星座运势数据并进行词频分析_第1张图片
语料库在线
词云分析

你可能感兴趣的:(爬取星座运势数据并进行词频分析)