吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3590|回复: 6
收起左侧

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

[复制链接]
天空宫阙 发表于 2019-3-9 14:00
本帖最后由 天空宫阙 于 2019-3-9 20:43 编辑

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

先放结果

result.jpg

这是我爬取了论坛悬赏区,200页一共一万条标题的词频分析。

结果表明论坛的小伙伴的高频问题是:求视频(下载),教程,下载(文件,文库),(破解)软件,工具,源码,模板等等

对这些方面有一技之长的大佬就很容易挣到CB。



实现思路

吾爱悬赏区词频分析.jpg

注意事项:

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)

帮忙,免费评分!

受到启发本版块‘’编程语言区‘’标题的词频统计如下(只爬了20页不是很准确):
result12.jpg
发现爬虫还是挺受到欢迎的。
ps:代码中的css选择器要稍加修改,英文的屏蔽去掉,其他都不变

免费评分

参与人数 4吾爱币 +6 热心值 +4 收起 理由
zhoujinjian + 1 + 1 鼓励转贴优秀软件安全工具和文档!
xyyk2009 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
E飞翔 + 1 + 1 赞一个,我也在学。

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 天空宫阙 发表于 2019-3-9 14:15 来自手机
本帖最后由 天空宫阙 于 2019-3-9 14:30 编辑

wuai_statistics.py中的time库没有用到可以删掉,在调试功能的时候忘去掉了
Ganlv 发表于 2019-3-9 14:26
说不定过几天,"以上词语均被视为水帖屏蔽词“ ←_←
 楼主| 天空宫阙 发表于 2019-3-9 14:34
Ganlv 发表于 2019-3-9 14:26
说不定过几天,"以上词语均被视为水帖屏蔽词“ ←_←

因为是悬赏区出现这些词语也无可厚非啊,不过你也提醒我了,改一下开始的url也可以统计其他版块的词频
等待雨的故事 发表于 2019-3-9 15:36
__name__ == '__main__有什么用?看了解释还是有点不懂
 楼主| 天空宫阙 发表于 2019-3-9 16:18 来自手机
等待雨的故事 发表于 2019-3-9 15:36
__name__ == '__main__有什么用?看了解释还是有点不懂

https://www.jianshu.com/p/234e9d3dbc30

一般情况下在我们开发时,这个模拟main函数/方法中,会有两个作用,一是用来编写测试代码,二是用来规范程序入口

此处去掉问题也不大,简单来说就是代码规范
等待雨的故事 发表于 2019-3-9 16:51
天空宫阙 发表于 2019-3-9 16:18
https://www.jianshu.com/p/234e9d3dbc30

一般情况下在我们开发时,这个模拟main函数/方法中,会有两 ...

现在说还是不懂,等我以后用到在理解就好点。我现在只学了爬虫前面的部分
zhoujinjian 发表于 2019-11-18 13:56
天空宫阙 发表于 2019-3-9 16:18
https://www.jianshu.com/p/234e9d3dbc30

一般情况下在我们开发时,这个模拟main函数/方法中,会有两 ...

这个不是代表主函数吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 17:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表