吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3893|回复: 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] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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, 2025-5-23 05:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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