目标网址:http://www.gaoloumi.com/forum.php?mod=forumdisplay&fid=30&page=0

page后面加的数字就是论坛内容的页面数,可以通过改变其值获取南京版的所有页面。

目标:我们知道帖子的名称代表着其内容的主要思想,所以可以通过抓取所有帖子名称来对其进行内容挖掘。

步骤:

  • 抓取网页帖子的名称,保存在文本文件中。
  • 使用jieba分词工具可以实现分词、去除停留词(对文本分析来说无关紧要的词语)、判断词性等功能。
  • 制作词云(可以使用WordCloud库),我这里推荐一个自己喜欢的网站工具:词云统计。这个网站样式好看功能也很强大。

一 分词代码如下:

#对文本进行分词
def get_divide(i):filename = 'file' + str(i + 1) + '.txt'stop_words = set(line.strip() for line in open('stopwords.txt',encoding = 'utf-8'))"""
这里要用只读模式打开,否者会将上一个方法写入的内容覆盖掉。
另外要注意用二进制模式( rb(二进制读) , wb(二进制写))打开,否者会编码错误:
UnicodeDecodeError: 'gbk' codec can't decode byte 0x90 in position 2: illegal multibyte sequence"""with open(filename,'rb') as f:file = f.readlines()for each in file:"""直接jieba.cut()方法会报错:not enough values to unpack (expected 2, got 1) 先引入jieba.posseg模块就不会。"""seg_list = pseg.cut(each)#flag是用于判断词性的for item,flag in seg_list:               if not item in stop_words and flag == 'n':print(item)

二 全部代码:

import requests
from bs4 import BeautifulSoup
import re
import time
import jieba
import jieba.posseg as psegdef getReq(i):try:url_1 = "http://www.gaoloumi.com/forum.php?mod=forumdisplay&fid=30&page="url = url_1 + str(i)r = requests.get(url)r.raise_for_statusr.encoding = r.apparent_encodingreturn r.textexcept:print('')#获取html文本
def getHtml(r):soup = BeautifulSoup(r,'lxml')html = soup.find_all('a','s xst')return html#将每个页面所有帖子的名称写入文件
def writeHtml(html,i):try:fileName = 'file' + str( i + 1 ) + '.txt'#注意编码格式with open(fileName,'w+',encoding = 'utf-8') as f:for each in html:f.write(each.string)f.write('\n')except:pass#对文本进行分词
def get_divide(i):filename = 'file' + str(i + 1) + '.txt'stop_words = set(line.strip() for line in open('stopwords.txt',encoding = 'utf-8'))"""
这里要用只读模式打开,否者会将上一个方法写入的内容覆盖掉。
另外要注意用二进制模式( rb(二进制读) , wb(二进制写))打开,否者会编码错误:
UnicodeDecodeError: 'gbk' codec can't decode byte 0x90 in position 2: illegal multibyte sequence"""with open(filename,'rb') as f:file = f.readlines()for each in file:"""直接jieba.cut()方法会报错:not enough values to unpack (expected 2, got 1) 先引入jieba.posseg模块就不会。"""seg_list = pseg.cut(each)#flag是用于判断词性的for item,flag in seg_list:               if not item in stop_words and flag == 'n':print(item)#主函数
def main():for i in range(5):r = getReq(i)html = getHtml(r)writeHtml(html,i)get_divide(i)print("第" + str(i+1) + "个网页爬取成功!")time.sleep(1)
main()

三 词云统计效果:

从词云图中我们可以简单的看出南京的居民更加关注国家对于机场的规划。O(∩_∩)O哈哈~

转载于:https://www.cnblogs.com/BeautifulSoup/p/8472727.html

高楼迷论坛南京版数据爬取相关推荐

  1. 金投网煤炭数据爬取-精进版

    金投网数据爬取-加强版 注:博主经过一个暑假的游手好闲,学习到了xpath及一些其他的有意思的小东西.对于之前爬取金投网的课题有了一些新的思路,特此卷土重来,让我们开始吧! 目录标题 金投网数据爬取- ...

  2. 数据爬取大案例?——阿里巴巴诉南京码注公司数据抓取案​

    ​原告:杭州阿里巴巴广告有限公司 被告:南京码注公司 (2019)浙0108民初5049号 [案情] 1688系由原告阿里经营和提供网络服务的网络批发平台.阿里巴巴的企业诚信体系建立在用户授权搜集各类 ...

  3. 打造轻量级可视化数据爬取工具-菩提

    作者:jiaqiangwang,腾讯 IEG 后台开发工程师 背景 在大数据及机器学习日益火爆的今天,数据作为基石发挥了至关重要的作用.网页内容爬取作为数据的一个重要补充来源,数据爬取开发成了一个必不 ...

  4. Python 大数据分析疫情:如何实现实时数据爬取及 Matplotlib 可视化?

    作者 | 杨秀璋 来源 | CSDN博客专家Eastmount 责编 | 夕颜 思来想去,虽然很忙,但还是挤时间针对这次肺炎疫情写个Python大数据分析系列博客,包括网络爬虫.可视化分析.GIS地图 ...

  5. 基于python的自媒体和官媒数据爬取、可视化分析及云词图制作

    创作不易,如果以下内容对你有帮助,别忘了点一个赞,让更多的小伙伴能看到吧~~ 1. 问题描述 为了研究自媒体和官媒的传播新闻<武汉快递小哥汪勇的先进事迹>的及时性和传播力度,对比两种传播途 ...

  6. UN Comtrade(联合国商品贸易统计数据库)数据爬取Python代码——使用动态IP

    目录 Virtual Private Network 代理服务器 测试代理IP是否生效 上一篇博文UN Comtrade(联合国商品贸易统计数据库)数据爬取Python代码讲了如何使用Python爬取 ...

  7. 从高可用IP代理池到千万级网易云音乐数据爬取的实现

    博客引流 首先 ㊗️大家 1024 快乐 之前写了第一版 网易云爬虫 逻辑比较简单 总结一下,就是: 抓取各分类下歌单id 根据歌单id, 获得这个歌单id下的歌曲详情 把拿到的数据存到落到本地文件, ...

  8. 【EduCoder答案】Scrapy爬虫(二)热门网站数据爬取

    简介 答案查询的入口网页版 并不是所有的关卡都有答案,有些只有部分关卡有 不要直接复制答案哦 Scrapy爬虫(二)热门网站数据爬取 >>>查看 第1关:猫眼电影排行TOP100信息 ...

  9. 利用新浪API实现数据的抓取\微博数据爬取\微博爬虫 1

    PS:(本人长期出售超大量微博数据.旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com.由于微博接口更新后限制增大,这个代码已经不能用来爬 ...

最新文章

  1. 周志华教授:关于深度学习的一点思考!
  2. 试题 F: 特别数的和 第十届蓝桥杯
  3. 【codeforces 796A】Buying A House
  4. Spring注解的使用步骤,@Component注解创建的对象名称,常用注解Component、Repository、Service以及Controller的区别
  5. Nhibernate和 Entity Framework 4优缺点
  6. 数据结构 - 栈(数组模拟栈操作)
  7. 【CodeForces - 1051B】Relatively Prime Pairs (构造,思维,素数,水题)
  8. 请阐述调用Activity有哪几种方法,并写出相关的Java代码
  9. leetcode437. 路径总和 III
  10. credential for git
  11. [渝粤教育] 西南科技大学 农业技术经济学 在线考试复习资料
  12. 大数据处理方面的 7 个开源搜索引擎
  13. linux中下载安装包
  14. 用Python实现模糊聚类(传递闭包法)
  15. 戴尔G5 5590重装系统
  16. C#开发之——MonthCalendar(12.18)
  17. vscode快捷键实现快速换行
  18. 英特尔Intel CPU睿频原理探讨
  19. 微服务的设计模式,你用了几个
  20. 关于RPC框架封装时ThreadPool的选型和设计

热门文章

  1. Excel如何固定表头,任意一行
  2. MinGW64编译OpenSSL
  3. Python_day21--练习--点亮灯泡、表格隔行变色
  4. 洛谷P2168 荷马史诗
  5. 快手资讯 | 快手前CEO宿华业务助理彭佳瞳、商业算法策略负责人李勇保被曝离职
  6. Cmake opencv_videoio_ffmpeg.dll下载失败
  7. Strange Towers of Hanoi 汉诺塔问题及其升级(递推)四个汉诺塔问题
  8. 【满分】【华为OD机试真题2023 JAVAJS】整理扑克牌
  9. iview mysql_iView 发布后台管理系统 iview-admin,没错,它就是你想要的
  10. 全球旅游业数字化发展研究报告 附下载