Web抓取整个网站熊猫词云

时间:2019-11-21 02:39:59

标签: python pandas web-scraping jupyter-notebook word-cloud

我正在尝试根据特定网站上的剪贴文本创建wordcloud。我遇到的问题与此有关的网络抓取部分。我尝试了两种不同的方法,但两次尝试都被我卡在了如何继续进行上。

第一种方法: 将每个特定标签的数据转入其自己的数据框

main_content= soup.find("div", attrs= {"class" : "col-md-4"})
main_content2= soup.find("article", attrs= {"class" : "col-lg-7 mid_info"})
comp_service= soup.find("div", attrs= {"class" : "col-md-6 col-lg-4"})

在这里,我停留在如何将三个数据帧加在一起以创建词云的问题上。如果我仅使用其中一个DF并将其添加到“列表”中,则效果很好,但是我不确定如何将其他两个添加到单个DF中,然后运行其余代码。以下是“云药水”一词的其余代码:

str = ""
for list in lists:
    info= list.text
    str+=info

mask = np.array(Image.open("Desktop/big.png"))
color= ImageColorGenerator(mask)
wordcloud = WordCloud(width=1200, height=1000, 
                      max_words=400,mask=mask, 
                      stopwords=STOPWORDS, 
                      background_color="white",
                      random_state=42).generate(str)

plt.imshow(wordcloud.recolor(color_func=color),interpolation="bilinear")
plt.axis("off")
plt.show()

尝试2 我发现了一段代码,可以从特定标记中提取所有数据并将其输入文本中

i = 0
for lists in soup.find_all(['article','div']):
    print (lists.text)

但是,当我尝试运行其余代码时,

mask = np.array(Image.open("Desktop/big.png"))
color= ImageColorGenerator(mask)

wordcloud = WordCloud(width=1200, height=1000, 
                      max_words=400,mask=mask, 
                      stopwords=STOPWORDS, 
                      background_color="white",
                      random_state=42).generate(str)

plt.imshow(wordcloud.recolor(color_func=color),interpolation="bilinear")
plt.axis("off")
plt.show()

我得到“ ValueError:我们至少需要1个单词才能绘制单词云,得到0。”运行wordcloud DF代码后。

我实质上只是想从网站中提取所有数据,将这些信息存储到文本文件中,然后将这些数据转换成词云。

请让我知道我可以提供的任何建议或澄清。

谢谢。

1 个答案:

答案 0 :(得分:0)

这最终为我工作

lists = soup.find_all(['article','div'])
str = ""
for list in lists:
    info= list.text
    str+=info