专栏名称: AirPython
分享 Python 自动化及爬虫、数据分析实战干货,欢迎关注。
目录
相关文章推荐
余杭发布  ·  投入超3800亿元!阿里巴巴最新宣布! ·  3 天前  
余杭发布  ·  0→100!余杭有密码! ·  3 天前  
51好读  ›  专栏  ›  AirPython

实战 | 用可视化方式看新闻,迅速了解最新时事热点

AirPython  · 公众号  ·  · 2021-05-13 12:03

正文


大家好,我是安果!


今天教大家如何爬取新浪网新闻数据,通过词云可视化展示新闻关键词,快速了解最新的新闻热点。这里爬取了 2500 条新闻数据进行演示



这里采集的主要是国内最新新闻数据,先来看一下数据:




1

网页分析


在开始采集之前先说一下新闻数据来源(新浪网)

https://news.sina.com.cn/china/



下一页分析


我们想要采集多条数据,因此需要找到下一页的规律



点击第二页的时候,发现网页链接没有变化,这里数据是通过异步加载过来的


因此查看 network,找到了目标异步链接:

https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=2&encode=utf-8&callback=feedCardJsonpCallback&_=1619440444354


但发现 callback=feedCardJsonpCallback& _ = 1619440444354 ,可以去掉,因此最终链接如下:

https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=2&encode=utf-8


参数 page 是页数,经过测试 page 范围在 1~125,到 126 的时候就请求到的是空数据


每一页一共有 20 条,因此一共是 2500 条新闻数据


json数据结构




这里咱们学院获取三个字段(标题 title、原标题 intro、关键词 keywords)



2

采集数据


采集第一页

分析好之后,下面开始使用 python 编程采集数据

url="https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=1&encode=utf-8"res = requests.get(url,headers=headers).json()data = res['result']['data']for i in data:    print(i['title'])    print(i['intro'])    print(i['keywords'])



这是第一页的数据,已经可以成功采集,只需要改变 page 值就可以采集下一页数据。接着开始把采集的数据存入到 excel 中


保存数据

这里使用 openxl 库去将数据保存到 excel 中,先定义表头

outwb = openpyxl.Workbook()outws = outwb.create_sheet(index=0)outws.cell(row=1, column=1, value="标题")outws.cell(row=1, column=2, value="原标题")outws.cell(row=1, column=3, value="关键词")


接着写入到 excel 中

count = 2for page in range(1,126):    url="https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page="+str(page)+"&encode=utf-8"    res = requests.get(url,headers=headers).json()    data = res['result']['data']    for i in data:        outws.cell(row=count, column=1, value=i['title'])        outws.cell(row=count, column=2, value=i['intro'])        outws.cell(row=count, column=3, value=i['keywords'])        count = count + 1        print("采集第"+str(count)+"条")outwb.save("新闻数据-李运辰.xls")  # 保存




3

词云可视化


这里主要绘制三个词云可视化(用标题、原标题、关键词分布作为数据去画图)


标题是原标题的精简版,关键词是这篇文章的核心关键词,通过绘制这个三个词云图,然后进行对比分析


读取数据

datafile = u'新闻数据-李运辰.xls'data = pd.read_excel(datafile)d1 = data['标题'].tolist()d2 = data['原标题'].tolist()d3 = data['关键词'






请到「今天看啥」查看全文