我用爬虫爬取了“腾讯云技术社区”所有的文章,看看我得到了什么
前言
闲来周末练习下爬虫
就拿腾讯云技术社区来开刀, 哈, 经典皮卡丘开头
这次我通过利用Python爬虫
加上一个”不完美”的分词系统
构建了,腾讯云技术社区所有文章的词云,来看看总体大概都写了什么
嘻嘻嘻:)
正文
编程思路
- 获取所有文章的地址
- 对单文章页进行内容提取
- 将所有文章进行内容提取,并将结果存入MongoDB数据库中
- 利用分词系统和wordcloud进行词云的构建
**注:**存储所有文章地址前,我加了一个随机数,后期随机抽取文章进行提取
防止因日期不同导致结果具有局部性
获取文章列表页,所有的文章信息
保存格式为:
- index 随机数索引
- title 文章名
- address 文章地址
- content 文章内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| 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
|
解析文章内容
1 2 3 4 5 6
| 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篇文章组成
这就是所有文章生成的词云,分词和筛选不是很好,导致数词、人称名词多
总结
可以看出, 腾讯云技术社区上的文章,大部分都是和数据有关的
哈哈,不是很理想,待日后改善一下(词的筛选)
最后打个小广告,希望大家关注下我的公众号: ikang_kj
嘿嘿 :)