100行python code追踪PTT现在红什么
(修改过)
IPFS
![](https://assets.matters.news/embed/09a8583f-91ca-479e-a392-a24a32c2cbbf.jpeg)
PTT是当前台湾趋势的指标之一,透过解析热门文章,制作文字云,可概览当前台湾热门话题,熟悉台湾热词趋势。
本文结合python网路爬虫、NLP中文分词、python wordcloud制作、cron排程撰写,100行以内的python code打造你的PTT热门追踪文字云。如果您已经有基础,想直接看code, 点这边传送门~
PTT热门文章爬虫
- Cookie的使用:PTT爬虫仅需透过get请求,难度不高,仅部分文章对年龄有限制,因此需要Cookie置于头部方可顺利取得内文。
- asyncio增加效率:以ThreadPoolExecutor执行requests,避免多篇文章多个请求IO等待,影响爬取效率的问题。
名词提取与词频计算
- 选用HanLP:Python中的中文断词工具较为人熟知的有jieba、thulac、hanlp、fool、nlpir,而根据既有评测结果可知,jieba在时间上具有相当大的优势,但分词效果普通,本文选用分词效果较佳的hanlp作为工具,因为仅爬取当前20篇热门文章,数量在可接受范围,因此hanlp时间上的消耗是可接受的。
- 词频计算:分词之后可以根据词性判断,会过滤掉常出现的干扰词汇(作者、来源、八卦版等词语)以及非名词内容,再透过dictiondary制作词频表。
文字云制作
- python-wordcloud:选用wordcloud这个成熟的library来完成文字云的制作,将先前制作好的词品表透过
generate_from_frequencies
方法即可。 - image-mask:wordcloud支持给定图片作为特定图形,仅需要在实例化时指定mask即可。
crontab排程设置
- 每日凌晨12:01分执行:由于想取得每日新闻热词,因此设定于每日凌晨执行,若对即时性有更高要求可以设定更小的时间区间喔~想调整的读者可以参考鸟哥的教学。
- airflow可视化工具:若您对排程任务可视化有兴趣,与python友好的airflow会是你需要的工具,相关操作可以参考我对airflow的介绍。
1 0 * * * cd $PATH && source venv/bin/activate && export PYTHONPATH="${PYTHONPATH}:${PWD}" && python crawler.py
总结
相信您愿意看到这边,您一定对Python网路爬虫与可视化有兴趣,100行python code能做的事情有限,资料过滤的逻辑粗糙与成果展示的缺陷都可以继续完善,然而虽然不足之处存在,但我认为确实是个好玩的应用,希望这样的应用也让您觉得有趣,也期待您透过留言与我讨论其他好玩的应用。
本篇文章原文在我的medium,目前会逐渐转移到这个新平台~
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!
![](https://imagedelivery.net/kDRCweMmqLnTPNlbum-pYA/prod/avatar/7d3a0930-c0b6-4101-a376-7bcbf018c701.jpeg/public)
- 来自作者
- 相关推荐