前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Python爬虫:对科技新闻的数据分析

Python爬虫:对科技新闻的数据分析

原创
作者头像
Yolandarrrrr
修改于 2020-07-02 09:24:57
修改于 2020-07-02 09:24:57
2.5K11
代码可运行
举报
运行总次数:1
代码可运行

前言

大数据时代到来,网络数据正成为潜在宝藏,大量商业信息、社会信息以文本等存储在网页中,这些具有相当大价值的信息不同于传统的结构化数据,属于非结构化数据,需要我们使用一定的技术和方法将其转化为计算机能够理解的特征信息,然后我们才能对其进行分析。这里我们采用python爬虫提取腾讯网站科技新闻的标题,通过文本分析,来进行分析。

数据获取

数据获取来源是QQ门户网站科技区频道https://new.qq.com/ch/tech/瀑布流热点新闻的标题。

我们使用selenium工具进行数据获取,相对于常用的urllib、beautifulsoup和request爬虫模块,使用selenium能对WEB浏览器进行自动化操作,优点是获取的数据所见即所得,不用写和测试GET网页的配置,对瀑布流式的数据获取简单,缺点要等待浏览器对数据的加载,速度较慢。

与其他爬虫方法一样,我们需要通过HTML的标签来获取数据。

HTML元素分析1
HTML元素分析1

可以看到,热点新闻的链接存放在<li>标签中,属性class=”item cf”或”item-pics”,且属性id是唯一标识,包含时间属性。

HTML元素分析2
HTML元素分析2

展开标签<li>我们可以看到里面包含标签<a>,标题信息就在之中。因此我们获取数据的思路就有了。

爬虫流程
爬虫流程
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 从标签class获取元素
elements1 = browser.find_elements_by_css_selector('li.item.cf')
elements2 = browser.find_elements_by_css_selector('li.item-pics')

write_conn, read_conn = Pipe()
process = Process(target=recv, args=(write_conn,))
process.start()
for element in elements1:
    # 获取<a>的内容
    a = element.find_element_by_tag_name('a')
    print(a.get_attribute("innerHTML"))
    if len(element.get_attribute('id')) > 0:
        read_conn.send((element.get_attribute('id'), a.get_attribute("innerHTML")))
    else:
        read_conn.send(('20200624002985_1', a.get_attribute("innerHTML")))

for element in elements2:
    a = element.find_element_by_tag_name('a')
    if len(element.get_attribute('id')) > 0:
        read_conn.send((element.get_attribute('id'), a.text))
    else:
        read_conn.send(('20200624002985_1', a.text))

腾讯新闻门户网站的新闻采取的是瀑布流式刷新,当用户鼠标滑动向下,才会有新数据加载到浏览器。所以我们还得让浏览器滑动滚轴,根据测试腾讯新闻每天会更新几百条新闻,若想全部加载完大概有2000多条,在我的运行机器上大概需要10分钟的滑动。我们还能配置浏览器关闭图片获取,加快速度。

代码语言:python
代码运行次数:1
运行
AI代码解释
复制
start = time.time()
while time.time() - start < 1 * 12:
    # 随机的滑动距离
    distance = random.randint(300, 400)
    js = 'window.scrollBy(0,' + str(distance) + ')'
    # 浏览器滑动
    browser.execute_script(js)
    # 随机的休息时间
    time.sleep(random.uniform(0.2, 0.4))

爬虫过程截图
爬虫过程截图

通过测试我们发现,在滑动完毕后读取数据会出现之前查看不到的<div>标签,通过class名字我们知道这是一个慢加载的内容,原因是滑动后马上读取数据,但是仍有未收到的HTTP数据,浏览器无法加载完毕。解决的办法是可以在滑动后让程序sleep一段时间再读取元素。

爬完后接下来我们利用正则表达式将不同标签下的标题提出出来:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
r = re.findall(r'\"([^\"]*)\"', t) #提取<img alt...
r = re.findall(r'<div class=".*">(.*?)</div>', t) #提取<div class...

抓取部分截图
抓取部分截图

文本分析

将爬取到的所有标题写入txt文件中形成我们的目标分析文本。利用TextRank算法来进行文本分析。TextRank算法可以用来提取关键词和摘要。TextRank4ZH是指针对中文文本的TextRank算法的python算法实现。

TextRank算法思路:

  1. 把给定的文本 T 按照完整句子进行分割,即:T=[S1,S2,…,Sm]
  2. 对于每个句子,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词,其中 ti,j 是保留后的候选关键词。Si=[ti,1,ti,2,...,ti,n]
  3. 构建候选关键词图 G = (V,E),其中 V 为节点集,由(2)生成的候选关键词组成,然后采用共现关系(Co-Occurrence)构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为K 的窗口中共现,K表示窗口大小,即最多共现 K 个单词。
  4. 根据 TextRank 的公式,迭代传播各节点的权重,直至收敛。
  5. 对节点权重进行倒序排序,从而得到最重要的 T 个单词,作为候选关键词。
  6. 由 5 得到最重要的 T 个单词,在原始文本中进行标记,若形成相邻词组,则组合成多词关键词。

TextRank4ZH是针对中文文本的TextRank算法的python算法实现。在命令行中安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys
import Lib
try:
    Lib.reload(sys)
    sys.setdefaultencoding('utf-8')
except:
    pass

import codecs
from textrank4zh import TextRank4Keyword

text = codecs.open('./doc/腾讯1天.txt', 'r', 'utf-8').read()

tr4w = TextRank4Keyword()
tr4w.analyze(text=text,lower=True, window=3, pagerank_config={'alpha':0.85})

word_list=''
phrase_list=''
keywd=[]
keywg=[]
for item in tr4w.get_keywords(30, word_min_len=2):
    word_list=word_list+' '+item.word
    keywd.append(item.word)
    keywg.append(item.weight)

#print('--phrase--')

for phrase in tr4w.get_keyphrases(keywords_num=30, min_occur_num = 0):
    phrase_list = phrase_list + ' ' + phrase
  • 将频率出现次数最高的前30个关键词提取出来以条状图进行展现:

高频词可视化数据
高频词可视化数据

可以看出手机领域是近期常出现的新闻,在年中,很多手机厂商发布了新款旗舰手机,所以热点颇多。其中广受关注的就是Apple、华为和小米公司。

  • 选取出现次数大于5次和10次的短语:

出现次数大于5次的短语
出现次数大于5次的短语
出现次数大于10次的短语
出现次数大于10次的短语

可以看出直播带货是近期讨论较为频繁的话题,苹果发布会的话题是爆发较大的话题

词云

将提取到的关键词或关键词组拼接成字符串利用WordCloud包生成词云,将高频率的关键词或关键词组进行视觉上的突出。

在python中生成词云时,出现导入Wordcloud包失败,wordcloud是python第三方词云库,需要下载wordcloud编译后安装包,将文件放入python.exe存在的位置;

执行pip install wordcloud-1.5.0-cp36-cp36m-win_amd64.whl ;

再重新执行pip install  WordCloud,即安装成功。

  • 高频词词云:

高频词词云
高频词词云
  • 高频短语词云:

高频短语词云
高频短语词云

通过条状图和词云图,我们可以直观地看到最近大家关注的科技新闻的热点。以我们分析的数据为例,当天的热点话题包括各苹果、华为、疫情、直播、芯片、手机等,由此我们可以直接定位热点的关键内容;通过关键词组的词云分析,我们可以扩展热点信息,如苹果芯片、功能体验、企业技术、升级一体验等,由此获取关键内容之间的联系。其中,苹果公司的动态位居话题首榜,这是因为苹果公司知名度广,其产品也是全球关注的明星产品,由于马太效应,其发布的产品动态也一直是民众、企业关注的重点。而通过条状图,我们可以看到苹果的话题的讨论热度明显高于其他关键词,因此我们也可以看出此次苹果芯片的发布动态的影响性之大,话题讨论热度之高。

我们通过爬取门户网站上的科技新闻标题并进行文本分析,最终通过可视化可以便于我们快速获得科技最热话题,可以使我们快速通过搜索高频率关键词或关键短语来获取最近的热点文章内容;而我们在进行科技话题分析时,各个相邻分布的高频率关键词或许也存在某种相关性,如苹果之后是手机、华为、中国等,给我们在进行话题分析时提供一种思路。

小结

通过实践操作爬虫加文本分析来进行信息的分析,我们得出了有意思的结果。在实践过程中,我们遇到了很多问题,通过查找学习资料再一步步地解决了问题,由此收获了很多,发现也只有动手实践操,让知识落地才能真正地学会知识。而这次课题实验,我们也小小地领会到了爬虫和文本分析的作用,运用不同的文本分析的算法,或许我们还能得到更多其他的信息,而在今后的学习工作中,我们就可以利用python爬虫加文本分析来来研究其他方面的信息,来帮我们或许更多内容,解决一些关键性知识问题。

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

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

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

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

评论
登录后参与评论
1 条评论
热度
最新
这个讲了大概的思路,但有好几处错误,安装方式: pip3 install textrank4zh -i https://pypi.tuna.tsinghua.edu.cn/simple。 另import Lib 这样写,也有问题吧,在嵌入式板卡环境下,运行不了。
这个讲了大概的思路,但有好几处错误,安装方式: pip3 install textrank4zh -i https://pypi.tuna.tsinghua.edu.cn/simple。 另import Lib 这样写,也有问题吧,在嵌入式板卡环境下,运行不了。
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
爬来爬去(一):《蚁人2》豆瓣影评爬虫+简单情感分析+词云
今天是《蚁人2》国内上映的第19天,作为练手,打算把豆瓣上的短评爬下来作为分析的素材。
量化小白
2019/08/29
1.1K0
爬来爬去(一):《蚁人2》豆瓣影评爬虫+简单情感分析+词云
python爬虫进行Web抓取LDA主题语义数据分析报告
从网站提取数据的方法称为网络抓取。也称为网络数据提取或网络收集。这项技术的使用时间不超过3年。
拓端
2020/09/25
2.3K0
淮师2017校园新闻爬取&&WordCloud年度词云分析
前言:最近一直想做数据采集这块,想到年底了,来个年终总结什么的。所以就想到了爬取学校2017年的校内新闻。基于采集的五百多篇新闻结合Python的WordCloud做出来个词云,可视化新闻图片,根据关
MiChong
2020/09/24
8610
淮师2017校园新闻爬取&&WordCloud年度词云分析
textrank算法原理与提取关键词、自动提取摘要PYTHON
首先介绍原理与概念 TextRank 算法是一种用于文本的基于图的排序算法。其基本思想来源于谷歌的 PageRank算法(其原理在本文在下面), 通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本身的信息即可实现关键词提取、文摘。和 LDA、HMM 等模型不同, TextRank不需要事先对多篇文档进行学习训练, 因其简洁有效而得到广泛应用。 TextRank 一般模型可以表示为一个有向有权图 G =(V, E), 由点集合 V和边集合 E
学到老
2018/03/19
5.5K0
textrank算法原理与提取关键词、自动提取摘要PYTHON
《Python 黑科技》一键分析评论关键词,制作精美词云
评论情况: {'android': 545 次, 'ios': 110 次, 'pc': 44 次, 'uniapp': 1 次}
不吃西红柿
2022/09/19
5080
《Python 黑科技》一键分析评论关键词,制作精美词云
新闻联播也可以拿来做数据分析?
在Tushare Pro数据开放平台上,最近上线了近10年CCTV新闻联播文本数据,以及各大财经网站的即时资讯文本。
龙哥
2019/07/30
3.3K0
新闻联播也可以拿来做数据分析?
[Python从零到壹] 十六.文本挖掘之词云热点与LDA主题分布分析万字详解
欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。
Eastmount
2022/08/31
1.9K0
R语言爬虫与文本分析
之前用python做过简单的爬虫与分析,今天尝试一下用R完成相应的功能。首先用R爬取了《了不起的麦瑟尔夫人》豆瓣短评作为语料,然后进行了词云绘制、关键词提取的基本操作。 语料爬取 寻找链接 之
三猫
2018/04/10
2K0
R语言爬虫与文本分析
Python数据分析:揭秘_黑神话:悟空_Steam用户评论趋势
"黑神话:悟空"是一款以中国古典名著《西游记》为背景的动作角色扮演游戏。自公布以来,就因其精美的画面和流畅的战斗系统受到了广泛关注。然而,要真正理解玩家的反馈,我们需要深入分析Steam上的用户评论。Python作为一种强大的编程语言,提供了多种库和工具来帮助我们进行文本分析和数据可视化,从而揭示评论中的热点话题。
小白学大数据
2024/11/23
1680
Python数据分析:揭秘"黑神话:悟空"Steam用户评论趋势
"黑神话:悟空"是一款以中国古典名著《西游记》为背景的动作角色扮演游戏。自公布以来,就因其精美的画面和流畅的战斗系统受到了广泛关注。然而,要真正理解玩家的反馈,我们需要深入分析Steam上的用户评论。Python作为一种强大的编程语言,提供了多种库和工具来帮助我们进行文本分析和数据可视化,从而揭示评论中的热点话题。
小白学大数据
2024/11/22
1220
一个Python自动提取内容摘要的实践
利用计算机将大量的文本进行处理,产生简洁、精炼内容的过程就是文本摘要,人们可通过阅读摘要来把握文本主要内容,这不仅大大节省时间,更提高阅读效率。但人工摘要耗时又耗力,已不能满足日益增长的信息需求,因此借助计算机进行文本处理的自动文摘应运而生。近年来,自动摘要、信息检索、信息过滤、机器识别、等研究已成为了人们关注的热点。
IT派
2018/07/30
1.9K0
一个Python自动提取内容摘要的实践
Python生成词云
词云是一种可视化展示文本内容的工具,用于显示文本中出现次数较高的关键词。其主要思想是将文本中频繁出现的词汇以视觉化的方式展现出来,可以很快地帮助人们了解文本的主要内容和关键信息。
很酷的站长
2023/10/22
8320
Python生成词云
Python爬虫实战:抓取和分析新闻数据与舆情分析
在信息爆炸的时代,新闻和舆情分析对于企业和个人来说都具有重要意义。而Python作为一门优秀的编程语言,非常适合用于构建强大的爬虫工具,并用于抓取和分析新闻数据。本文将分享使用Python爬虫抓取和分析新闻数据,并进行舆情分析的实战经验,帮助你掌握这一有用的技能。
华科云商小徐
2023/09/11
1.9K0
我用Python爬虫爬取并分析了C站前100用户最高访问的2000篇文章
最近系统地学习了正则表达式,发现正则表达式最大的应用之一——网络爬虫之前一直没有涉猎,遂借此契机顺带写一个爬虫的demo备用。选择对象是CSDN排行榜前100用户,各自按访问量从高到低排序的前20篇文章,使用一些简单的数据分析手段看看技术热点,方便今后拓宽技术栈。
润森
2022/08/18
3810
我用Python爬虫爬取并分析了C站前100用户最高访问的2000篇文章
手把手教你怎么做一个词云
什么是词云?词云就是将从一大段文本中按出现频率提取的关键词组织成云朵或其他的形状,并在视觉上突出出现频率较高的关键字。
用户8639654
2021/07/15
1K0
十九大讲话文本分析(R语言)
18日观看了十九大的开幕直播,聆听了习大大的重要讲话,如此重要的讲话,怎能不结合我们的文本挖掘技术来深刻学习一下呢!这次的文章就让我们用R里面的jiebaR包和wordcloud2包,对习大大的讲话内容进行分词与统计,看看这次讲话都提到了什么?有哪些关键词? ---- jiebaR简介 1,worker( ):加载分词引擎。里面的type参数用来选择引擎类型,可选的有:混合模型‘mix’,最大概率法‘mp’,隐马尔科夫‘hmm’,关键词‘keywords’等。还有其他参数可以设置停用词,关键词数等,具体在加
三猫
2018/04/10
1.1K0
十九大讲话文本分析(R语言)
老外最喜欢的中国美食竟是酱油?这是怎么回事?python数据分析
注:想要完整代码的在末尾,注意新手建议慢慢看完。在此提示一下本篇文章的编写步骤:1.获取数据、2.翻译、3.数据清洗、4.切词词权重、5.词云
1_bit
2021/12/22
4830
Python文本挖掘:知乎网友如何评价《人民的名义》
文本分析使用愈来愈广泛,包括对新闻、电视剧、书籍、评论等等方面的文本挖掘并进行分析,可以深入找到表面文字看不到的细节。 介于《人民的名义》这部剧这么火,本人以此为基础,通过对知乎上网友提出的问题进行爬取,并搜集到每一问题的关注、浏览数,进行分析。在未登录的情况下,找到知乎——《人民的名义》主题网页下的等待回答——全部问题(见下图),时间截止到2017年4月15日,地址为:https://www.zhihu.com/topic/20047590/questions 。 (在登录状态下,可以显示更多信息,但
机器学习AI算法工程
2018/03/14
1.1K0
Python文本挖掘:知乎网友如何评价《人民的名义》
利用jieba和wordcloud从新闻中生成词云
wordcloud 是一个python实现的高效词频可视化工具,除了可以使用各种mask和颜色提供个性化的掩膜,还可以通过api便捷的挑战获得个性化的词云输出。 安装
菲宇
2020/03/25
2K0
淘宝数据分析实战:美食霸榜销量No.1的竟然是....
想必大家都喜欢囤货吧,小编购物车里全是加购的零食,闲来无事,就顺手爬了淘宝搜索美食出来的商品信息,简单做了个分析,借此案例给大家学习参考。
1480
2020/02/19
4770
推荐阅读
相关推荐
爬来爬去(一):《蚁人2》豆瓣影评爬虫+简单情感分析+词云
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文