null119 发表于 2019-7-10 23:22

python获取论坛版块/作者数据生成词云

本帖最后由 null119 于 2019-7-10 23:25 编辑

先看结果,看看各位在各个版块的作者词云图中有没有自己的名字:lol
原创区:
帖子标题词云图


作者词云图


脱壳破解区:
帖子标题词云图


作者词云图


移动安全区:
帖子标题词云图


作者词云图


软件调试区:
帖子标题词云图


作者词云图


编程区:
帖子标题词云图



作者词云图


动画区:
帖子标题词云图


作者词云图


逆向资源区:
帖子标题词云图


作者词云图



精品软件区:
帖子标题词云图


作者词云图



悬赏区:
帖子标题词云图


作者词云图



病毒分析区:
帖子标题词云图


作者词云图


病毒救援区:
帖子标题词云图



作者词云图


安全工具区:
帖子标题词云图


作者词云图


代码:
import requests
from lxml import etree
importjieba
import numpy as np
import matplotlib.pyplot as plt
import time
from PIL import Image
from wordcloud import WordCloud

def GetData(forumdata):
    for j in forumdata:
      url = 'https://www.52pojie.cn/forum-x-1'
      url = url.split('-')
      nurl = url + '-' + j + '-' + url+'.html'
      html = requests.get(nurl)
      ehtml = etree.HTML(html.text)
      forumname=''.join(ehtml.xpath('//*[@id="ct"]/div/div/div/h1/a/text()')).replace('『','').replace('』','')
      print(forumname)
      pagenum = ehtml.xpath('//*[@id="fd_page_top"]/div/label/span/text()')
      pagenum = pagenum.replace(' / ', '').replace(' 页','')
      txt=''
      for i in range(1,int(pagenum)+1):
            nurl = url + '-' + j + '-' + str(i) + '.html'
            html = requests.get(nurl)
            ehtml = etree.HTML(html.text)
            #pltxt = ' '.join(ehtml.xpath('//*[@id="threadlisttableid"]/tbody/tr/td/cite/a/text()'))#获取帖子作者
            pltxt = ' '.join(ehtml.xpath('//*[@class="s xst"]/text()')) #帖子标题
            txt = txt + pltxt
            time.sleep(1) # 给服务器留些喘气的时间
      cut_text =txt
      wordcloud = WordCloud(
            font_path='simhei.ttf',
            background_color='white',
            width=800,
            height=500
      ).generate(cut_text)
      wordcloud.to_file('c:\\'+forumname+'.png')
      plt.imshow(wordcloud, interpolation="bilinear")
      plt.axis("off")
      plt.show()

if __name__ == '__main__':
    forumdata=[
      "2",# 原创发布区 0
      "5",# 脱壳破解区 1
      "65",# 移动安全区 2
      "59",# 软件调试区 3
      "24",# 编程语言区 4
      "6",# 动画发布区 5
      "4",# 逆向资源区 6
      "16",# 精品软件区 7
      "8",# 悬赏问答区 8
      "32",# 病毒分析区 9
      "50",# 病毒救援区 10
      "41"#安全工具区 11
    ]
    print('开始获取,请稍候...')
    GetData(forumdata)

注:代码没有加容错,有需要就请自行添加修改

null119 发表于 2019-7-14 19:52

huguo002 发表于 2019-7-14 17:41
import jieba
import numpy as np#使用的numpy模块中的随机函数
from PIL import Image #图像处理标准 ...

是的,PIL本身是作为处理词云图背景的,后面词云图没有使用背景,SO。。

null119 发表于 2019-7-11 10:19

maxin881226 发表于 2019-7-11 08:50
精品软件区竟然有我哈哈哈哈 一大早看到高兴

那可真不是一般人啊{:1_921:}

syf1313113 发表于 2019-7-10 23:35

大佬。。。

syf1313113 发表于 2019-7-10 23:37

syf1313113 发表于 2019-7-10 23:35
大佬。。。

抢楼 等火

FleTime 发表于 2019-7-10 23:50

竟然没有水区。。。

策士 发表于 2019-7-11 00:00

爬取回帖,生成TXT,可以?

ghoob321 发表于 2019-7-11 07:14

待使用更长时间之后再来提建议 正在学习中

ghoob321 发表于 2019-7-11 08:11

我竟然运行成功。

maxin881226 发表于 2019-7-11 08:50

精品软件区竟然有我哈哈哈哈 一大早看到高兴{:1_893:}

braveheart 发表于 2019-7-11 08:53

感谢源码奉献。大牛呀
页: [1] 2 3
查看完整版本: python获取论坛版块/作者数据生成词云