金融数据挖掘与分析(三)-案例实战(1)

目录

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

3.1.1 打开百度新闻中搜索“阿里巴巴”

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

3.1.3 数据清洗并打印输出 


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

3.1.1 打开百度新闻中搜索“阿里巴巴”

获取网页源代码的代码如下:

import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 QIHU 360EE'}
url = 'https://www.baidu.com/s?tn=news&rtt=1&bsst=1&cl=2&wd=阿里巴巴'  # 把链接中rtt参数换成4即是按时间排序,默认为1按焦点排序,前面基础部分也有讲到
res = requests.get(url, headers=headers).text  # 加上headers用来告诉网站这是通过一个浏览器进行的访问
print(res)

【注】如何获得浏览器的headers,以我的360极速浏览器为例:

headers其实就是一个字典,它的第一个元素的键名为'User-Agent',冒号后面就是它的值,Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 QIHU 360EE。User-Agent实际代表访问网站的浏览器是哪种浏览器。

运行如下:

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

(1)提取新闻的来源

观察源代码,发现可以用<span class="c-color-gray c-font-normal c-gap-right">和</span>作为文本A和文本B,提取中间的来源和日期信息

import re
p_info = '<span class="c-color-gray c-font-normal c-gap-right">(.*?)</span'
info = re.findall(p_info, res, re.S)
print(info)

 运行结果及完整代码如下:

import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 QIHU 360EE'}
url = 'https://www.baidu.com/s?tn=news&rtt=1&bsst=1&cl=2&wd=阿里巴巴'  # 把链接中rtt参数换成4即是按时间排序,默认为1按焦点排序,3.4.1小节也有讲到
res = requests.get(url, headers=headers).text  # 加上headers用来告诉网站这是通过一个浏览器进行的访问

import re
p_info = '<span class="c-color-gray c-font-normal c-gap-right">(.*?)</span'
info = re.findall(p_info, res, re.S)
print(info)

 (2)提取新闻的网址和标题

观察源代码,网址和标题都可以用正则表达式取出

 

p_href = '<h3 class="news-title_1YtI1">.*?<a href="(.*?)"'
href = re.findall(p_href,res,re.S)
print(href)
p_title ='<h3 class="news-title_1YtI1">.*?>(.*?)</a>'
title = re.findall(p_title,res,re.S)
print(title)

通过print(href)和print(title)将两个列表打印出来,运行结果如下:

可见,提取出的网址和标题并不完善,标题中含有<em>和</em>等无效字符,后续将对数据进行清洗。

3.1.3 数据清洗并打印输出 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值