当前位置:   article > 正文

新闻数据挖掘 Python实现_在数据抓取与挖掘过程中不能够同时获取多家公司新闻并生成数据报告

在数据抓取与挖掘过程中不能够同时获取多家公司新闻并生成数据报告

前言

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

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

1.1 获取网页源代码

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

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

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

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

1.2.1 提取新闻的来源和日期

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

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

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

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

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


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

  1. pattern_herf = '<h3 class="c-title">.*?<a href="(.*?)"'
  2. herf = re.findall(pattern_herf, web_text, re.S)
  3. print(herf)
  4. pattern_title = '<h3 class="c-title">.*?>(.*?)</a>'
  5. title = re.findall(pattern_title, web_text, re.S)
  6. print(title)

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

1.2.3 数据清洗

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

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

 

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

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

for i in range
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/517562
推荐阅读
相关标签
  

闽ICP备14008679号