前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我用爬虫爬取了“腾讯云技术社区“所有的文章,看看我得到了什么

我用爬虫爬取了“腾讯云技术社区“所有的文章,看看我得到了什么

原创
作者头像
YingJoy_
修改2017-11-13 11:00:53
1.5K0
修改2017-11-13 11:00:53
举报
文章被收录于专栏:应兆康的专栏应兆康的专栏

我用爬虫爬取了“腾讯云技术社区”所有的文章,看看我得到了什么

前言

闲来周末练习下爬虫

就拿腾讯云技术社区来开刀, 哈, 经典皮卡丘开头

[1510467430155_5416_1510467431143.jpg]
[1510467430155_5416_1510467431143.jpg]

这次我通过利用Python爬虫

加上一个"不完美"的分词系统

构建了,腾讯云技术社区所有文章的词云,来看看总体大概都写了什么

嘻嘻嘻:)

正文

编程思路

  1. 获取所有文章的地址
  2. 对单文章页进行内容提取
  3. 将所有文章进行内容提取,并将结果存入MongoDB数据库中
  4. 利用分词系统和wordcloud进行词云的构建

注:存储所有文章地址前,我加了一个随机数,后期随机抽取文章进行提取

防止因日期不同导致结果具有局部性

获取文章列表页,所有的文章信息

保存格式为:

  • index 随机数索引
  • title 文章名
  • address 文章地址
  • content 文章内容

代码语言:txt
复制
    def get_one_page_all(self, url):
        try:
            html = self.get_page_index(self.baseURL)
			# 采用BeautifulSoup解析
            soup = BeautifulSoup(html, 'lxml')
            title = soup.select('.article-item > .title')
            address = soup.select('.article-item > .title > a[href]')
            for i in range(len(title)):
			# 生成随机索引
                random_num = random.randrange(0, 6500)
                content = self.parse_content('https://www.qcloud.com' + address[i].get('href').strip())
                yield {
                    'index' : random_num,
                    'title':title[i].get_text().strip(),
                    'address' : 'https://www.qcloud.com' + address[i].get('href').strip(),
                    'content' : content
                }
		# 遇到索引错误时跳过
        except IndexError:
            pass

解析文章内容
代码语言:txt
复制
    def parse_content(self, url):
        html = self.get_page_index(url)
        soup = BeautifulSoup(html, 'lxml')
	    #这里直接用了class为J-article-detail的div里面的内容
        content = soup.select('.J-article-detail')
        return content[0].get_text()

结果

这里我就直接把最后生成的结果放出来了

由于分词系统不是很好,导致结果不是很理想

这里我利用了正则表达式,将内容中所有非中文的字符去掉了

由于个人计算机配置不是很好,我将结果分为了20份,每份均为随机选取的100篇文章组成

[1]
[1]
[2]
[2]
[3]
[3]
[4]
[4]
[5]
[5]
[6]
[6]
[7]
[7]
[8]
[8]
[9]
[9]
[10]
[10]
[11]
[11]
[12]
[12]
[13]
[13]
[14]
[14]
[15]
[15]
[16]
[16]
[17]
[17]
[18]
[18]
[19]
[19]
[20]
[20]

这就是所有文章生成的词云,分词和筛选不是很好,导致数词、人称名词多

总结

可以看出, 腾讯云技术社区上的文章,大部分都是和数据有关的

哈哈,不是很理想,待日后改善一下(词的筛选)

最后打个小广告,希望大家关注下我的公众号: ikang_kj

嘿嘿 :)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我用爬虫爬取了“腾讯云技术社区”所有的文章,看看我得到了什么
    • 前言
      • 正文
        • 获取文章列表页,所有的文章信息
        • 解析文章内容
      • 结果
        • 总结
        相关产品与服务
        云数据库 MongoDB
        腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档