首页 编程教程正文

[原创]论坛悬赏区的爬取和分析,了解高频问题更好挣CB

piaodoo 编程教程 2020-02-22 22:10:11 1002 0 python教程

本文来源吾爱破解论坛

本帖最后由 天空宫阙 于 2019-3-9 20:43 编辑

入门级网页爬虫的简单应用,大神就不用看了
先放结果

result.jpg (303.47 KB, 下载次数: 1)

下载附件  保存到相册

2019-3-9 13:17 上传


这是我爬取了论坛悬赏区,200页一共一万条标题的词频分析。
结果表明论坛的小伙伴的高频问题是:求视频(下载),教程,下载(文件,文库),(破解)软件,工具,源码,模板等等
对这些方面有一技之长的大佬就很容易挣到CB。


实现思路

吾爱悬赏区词频分析.jpg (114.93 KB, 下载次数: 1)

下载附件  保存到相册

2019-3-9 13:28 上传


注意事项:
1.python版本:python3.7
2.自行pip3 install 代码中import的相关库(部分库不能通过pip成功安装的自行百度)



wuai_statistics.py中的代码
[Python] 纯文本查看 复制代码
import requests
from requests.exceptions import RequestException
from bs4 import BeautifulSoup
import re
import time
#请求头的修改
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'
}
#请求一个网页
def get_html(url):
    try:
        response = requests.get(url,headers=headers)
        response.raise_for_status()
        #print(response.apparent_encoding)
        response.encoding = 'GB2312'
        return response.text
    except:
        print('请求失败')


def parse_html(html):
    soup = BeautifulSoup(html, "lxml")
    thread = soup.select('#threadlisttableid')[0]
    tbodys = thread.find_all(id = re.compile('normalthread'))
    for tbody in tbodys:
        title = tbody.select('a')[2].string
        try:
            with open('wuai_statistics.txt', 'a', encoding='utf-8') as f:
                f.write(title+'\n')
                f.close()
        except:
            continue
        
def main(page):
    url='https://www.52pojie.cn/forum.php?mod=forumdisplay&fid=8&specialtype=reward&filter=specialtype&specialtype=reward&rewardtype=1&page='+str(page)
    html = get_html(url)
    parse_html(html)

if __name__ == '__main__':
    for page in range(1,201):
        print('正在保存第'+str(page)+'页')
        main(page)
        print('成功')



wordcloud_jieba.py中代码
[Python] 纯文本查看 复制代码
import numpy as np
from PIL import Image
import re
import jieba
from wordcloud import WordCloud,ImageColorGenerator,STOPWORDS
import  matplotlib.pyplot as plt

# 打开存放项目名称的txt文件
with open('wuai_statistics.txt','r',encoding='utf-8') as f:
    word= (f.read())
    f.close()
'''
# 图片模板和字体
image=np.array(Image.open('ditu.jpg'))
'''
font=r'C:\\Windows\\fonts\\msyh.ttf' 

# 去掉英文,保留中文 
resultword=re.sub("[A-Za-z0-9\[\`\~\!\@\#\$\^\&\*\(\)\=\|\{\}\'\:\;\'\,\[\]\.\<\>\/\?\~\。\@\#\\\&\*\%]", "",word) 
wordlist_after_jieba = jieba.cut(resultword) 
wl_space_split = " ".join(wordlist_after_jieba) 

# 设置停用词 
sw = set(STOPWORDS) 
sw.add("一个")
sw.add("求个")
sw.add("可以")
sw.add("怎么")
sw.add("如何")
sw.add("求助")
sw.add("一份")
sw.add("或者")
sw.add("有没有")
sw.add("一款")
sw.add("帮忙")

# 关键一步
my_wordcloud = WordCloud(scale=4,font_path=font,stopwords=sw,background_color='white',
                         max_words = 100,max_font_size = 60,random_state=20).generate(wl_space_split) 

#显示生成的词云 
plt.imshow(my_wordcloud)
plt.axis("off") 
plt.show() 

#保存生成的图片
my_wordcloud.to_file('result.jpg')



使用方法:
1.运行wuai_statistics.py爬取悬赏区标题200页(为了防止对网站服务器造成不必要的压力就不爬很多)保存到txt中
2.运行wordcloud_jieba.py对txt文件中的文字进行分析,采用jieba对汉字进行分词,wordcloud进行词频统计(wordcloud和jieba我这边是不能进行pip自动安装的或者说速度特别慢,安装方法请自行百度),生成本帖最上面的图片
3.wordcloud_jieba.py中设置的停用词也是高频出现的,因为没有实际含义所以不统计在内。


源码已经放上了
但土豪大佬可以下载一下源码文件

嗨学网 wuai_statistcs.zip (1.85 KB, 下载次数: 5) 2019-3-9 13:54 上传 点击文件名下载附件
下载积分: 吾爱币 -1 CB

帮忙,

本帖被以下淘专辑推荐: · 兄dei,上车吗?|主题: 376, 订阅: 863 · 吾爱收集|主题: 318, 订阅: 98 · SunGeekHouse|主题: 211, 订阅: 49 · zzzain46私家珍藏|主题: 131, 订阅: 24

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7745.html

搜索