搜集百度关键词的相关网站、生成词云

本文通过Python的urllib、BeautifulSoup、jieba、matplotlib等库,演示如何搜集百度搜索'AI'关键词的网页内容,进行数据处理,剔除非人工智能相关信息,最后利用wordcloud生成词云图,以便于一目了然地展示结果。

光是数据不展示粗来,怎么能一目了然呢?因此今天以百度“AI”这个关键词为例子,搜集搜索结果相关网站中的网页内容,用matplotlib+wordcloud实现生成词云图。
我们首先瞧一瞧百度搜索“AI”的是什么,https://www.baidu.com/s?wd=AI,结果发现基本由Artificial Intelligence人工智能的AI、Adobe Illustrator绘图工具的AI、“爱”的拼音等其他信息构成。其中除了人工智能方面以外的信息都是需要剔除的。
因此我们主要的思路是:采集数据→筛选→统计词频→生成词云图。

前期准备

下载好 urllib、BeautifulSoup、re正则表达式、matplotlib绘图、jieba分词、wordcloud词云、PIL、numpy数据处理这几个库并引用。

初写大纲

先来写个大纲版的,只有采集数据→词云图这两个简单的步骤。

数据采集部分:
需要进入到百度搜索出的结果里,爬取其中包含AI的页面内容。

from urllib import request
import urllib.parse
from bs4 import BeautifulSoup
import re
import random
import datetime

def getLinks(url):
    html = request.urlopen(url)
    bsObj = BeautifulSoup(html, "html.parser")
    return bsObj.find("div",{"id":"bodyContent"}).findAll("a",{"href":re.compile("^(/wiki/)((?!:).)*$")}) 
    #findAll结果是列表ResultSet
    #我们发现class="result-op c-container"和class="HMCpkB"等均是百度相关、广告等内容,因此剔除

random.seed(datetime.datetime.now())
url = "https://www.baidu.com/s?wd=AI"
linkList = getLinks(url)
while len(linkList)>0:
    nextLink=linkList[random.randint(0,len(linkList)-1)].attrs['href']  #href属性值只有后半段链接
    print(nextLink)          
    linkList=getLinks(nextLink)

当我们手中有了数据信息的txt文档后,便可以进行简单的词云图绘制。
绘图部分:

import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud , ImageColorGenerator
from PIL import Image
import numpy as np

txt=open(r'C:\Users\AER\Desktop\text.txt',"r",encoding="utf-8").read()

cut_text=jieba.cut(txt,cut_all=False)
result='/'.join(cut_text)

img=Image.open(r'C:\Users\AER\Desktop\PICPIC.png')
graph=np.array(Image)

wc=WordCloud(
    font_path=r"C:\Users\AER\testgit\Study-Notes\msyh.ttc",
    background_color='white', max_font_size=50, mask=graph)     #
wc.generate(result)

image_color=ImageColorGenerator(graph)
wc.recolor(color_func=image_color)
wc.to_file(r"C:\Users\AER\testgit\Study-Notes\5gpic.png")

plt.figure("词云图")
plt.imshow(wc)
plt.axis("off")
plt.show()

数据处理

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

库库冲鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值