新闻数据挖掘 Python实现

该博客详细介绍了如何使用Python进行新闻数据挖掘,从提取百度新闻的标题、网址、日期和来源开始,逐步深入到批量爬取多家公司新闻、生成数据报告、异常处理、实时数据挖掘,以及按时间顺序和批量爬取多页内容。此外,还提及了搜狗新闻和新浪财经的数据挖掘实战。
摘要由CSDN通过智能技术生成

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

1  提取百度新闻标题、网址、日期及来源

1.1 获取网页源代码

   我们通过如下代码可以获取网页源代码,示例中代码是获取在百度新闻中搜索阿里巴巴的网页源代码。

import requests

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                             'AppleWebKit/537.36 (KHTML, like Gecko) '
                             'Chrome/77.0.3865.120 Safari/537.36'}
res = requests.get(url, headers=headers)
web_text = res.text

因为百度新闻网站只认可浏览器发送的请求,所以需要设置headers参数,以模拟浏览器的发送请求,chrome浏览器可以通过about:version获取。

1.2 编写正则表达式提取新闻信息

1.2.1 提取新闻的来源和日期

通过观察网页源码,我们发现每条新闻的来源和发布日期都夹在<p class="c-author">和</p>之间,因此,可以通过正则表达式获取中间的来源和日期信息。

pattern = '<p class="c-author">(.*?)</p>'
info = re.findall(pattern, web_text, re.S)      # re.S用于考虑换行符,因为.和*不包含换行符
print(info)

获取的信息中包含了很多诸如空格、换行符、制表符以及<img>标签的内容,需要对数据进行二次清洗,这部分内容将在后面章节介绍到。

1.2.2 提取新闻的网址和标题。

为了提取新闻网址和标题,需要像上节那样从网页源码中发现规律,通过获取的源码,我们发现,新闻地址前面都有<h3 class="c-title">。


通过如下两段代码,可以分别获取新闻的网址和标题。

    pattern_herf = '<h3 class="c-title">.*?<a href="(.*?)"'
    herf = re.findall(pattern_herf, web_text, re.S)
    print(herf)

    pattern_title = '<h3 class="c-title">.*?>(.*?)</a>'
    title = re.findall(pattern_title, web_text, re.S)
    print(title)

获取的数据同样需要进行二次数据清洗。

1.2.3 数据清洗

  1. 新闻标题清洗
    提取的新闻标题数据存在两个问题:一是每个标题的收尾含有换行符和一些空格;二是中间含有<em>和</em>等无效字符。

(1)通过stip()函数把不需要的空格和换行符去掉。

 

for i in range(len(title)):
    title[i] = title[i].strip()

2)用sub()函数处理<em>和</em>

for i in range(len(title)):
    title[i] = title[i].strip()
    title[i] = re.sub('<.*?>', '', title[i])

2 新闻来源和日期清理
提取的新闻来源和日期中存在的问题:夹杂着很多<imag>标签信息;新闻来源和日期连在一起;

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值