大家一定还记得《金融数据的获取——一个爬虫的简单例子》这篇文章中介绍的爬虫思想和方法吧。看过之后,大多数人都会有这样的感受,虽然爬虫的原理比较简单,但是正则表达式却很难写。对于每个页面内容的爬取,首先需要要分析出HTML的大致结构,然后写一串很长很长的正则表达式,再需验证正则是否正确。

幸运的是,有人已经为我们造好了轮子,不必在爬取内容的定位上花较多时间。在Python中常用的爬虫工具有BeautifulSoup、lxml和pyquery,这些爬虫利器让我们脱离了繁琐的正则,仅需要几句简单的代码即可获得需要爬取的内容。BeautifulSoup:一个可以从HTML或XML文件中提取数据的Python库,并且支持一些第三方的解析器;

lxml:lxml采用的是XPath语法,XPath是一种专门对xml文档进行操作的语言;

pyquery:pyquery是python仿jquery的实现,与jquery的语法基本一致。

就笔者而言对jquery的语法比较熟悉,因此选择pyquery作为爬虫工具,大家可以根据自己的喜好来选择。

在这篇讲解中,我们会爬取中国证券网上的金融财经新闻。金融财经新闻是非结构化的文本数据,爬取这些文本是为了后续文本挖掘做准备的,关于金融文本挖掘相关的内容将会在后面文章中详细说明。

我们要爬取新闻初始页面是要闻 - 新闻 - 上海证券报·中国证券网。查看该页面的源码,可以发现在href属性中有跳转至各新闻正文的链接。

因此,第一步是要爬取这些新闻正文的URL。另外,新闻列表是可以翻页的,第二页页面链接是http://news.cnstock.com/news/sns_yw/2,根据URL的特点很容易对其进行字符串的拼接组装。

def get_urls(max_page):

start_url = 'http://news.cnstock.com/news/sns_yw/'

urls = []

for i in range(1,max_page+1):

spec_url = start_url + str(i) if i>1 else start_url + 'index.html'

source = pq(spec_url)

urls += [item.attr('href') for item in source('.new-list li a').items()]

return urls

上述代码中,通过source('.new-list li a').items()可以定位到html的元素,取各标签中的href属性即可获取各新闻正文的链接。可以看到,pyquery与jquery中的selector语法基本一致。max_page是可以控制的爬取最大页数,如果不想爬取所有的新闻可以将它设置小一点。

获取到每条新闻正文的链接后,根据该链接即可得到每条新闻对应的新闻标题、时间以及正文内容。打开正文页面的源代码,找到这些信息的所在位置。

采用pyquery定位并提取里面的html内容,并存放在字典中。

def get_news(url):

source = pq(url)

title = source('h1.title').text()

date = source('span.timer').text()

content = source('#qmt_content_div.content').text()

if content:

return {'URL': url, 'Title': title, 'Date': date, 'Content': content}

获取了我们想要的信息后,需要将其存到文本文件中,作为后续分析挖掘的原始数据。在这里,每条新闻都会使用一个txt文件去存储。

def save_txt(res):

reload(sys)

sys.setdefaultencoding('utf-8')

news_date = datetime.datetime.strptime(res['Date'],'%Y-%m-%d%H:%M:%S').strftime('%Y%m%d')

f_name = news_date + '_' + res['Title']

with codecs.open('securitynews/%s.txt'%f_name, 'w+', encoding='utf-8') as f:

f.write('来源网址:' + res['URL'] + '\n')

f.write('标题:' + res['Title'] + '\n')

f.write('日期:' + res['Date'] + '\n')

f.write('正文:' + res['Content'] + '\n')

大家可以看到,有了爬虫利器后我们再也不用写复杂的正则表达式了。对于静态网页的爬取,并没有什么技术上的难点,每位读者都可以去尝试获取自己想要的数据。

我的微信公众号:会掘金的小鹿(NuggetsRoad)

是时候关注一波了!

python 爬取财经新闻_金融财经新闻的文本爬取相关推荐

  1. python爬网易新闻_爬虫基本介绍 python3 爬虫爬取网易新闻排行榜

    爬虫基本介绍 1. 什么是爬虫? 爬虫是请求⽹网站并提取数据的⾃自动化程序 2. 爬虫的基本流程 发起请求 通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers ...

  2. pythonurllib库获取yahoo财经数据_金融数据的获取——一个爬虫的简单例子

    对量化投资策略进行研究,第一步就是获取我们需要的数据.使用历史数据能够对策略进行回测,以验证策略的有效性和可信性.另一方面,量化投资本身也是一种对数据的研究,因此它也必须遵循数据分析的相关步骤.作为一 ...

  3. python爬取京东书籍_一个scrapy框架的爬虫(爬取京东图书)

    我们的这个爬虫设计来爬取京东图书(jd.com). scrapy框架相信大家比较了解了.里面有很多复杂的机制,超出本文的范围. 1.爬虫spider tips: 1.xpath的语法比较坑,但是你可以 ...

  4. python爬虫淘宝手机_【Python3 爬虫】14_爬取淘宝上的手机图片

    现在我们想要使用爬虫爬取淘宝上的手机图片,那么该如何爬取呢?该做些什么准备工作呢? 首先,我们需要分析网页,先看看网页有哪些规律 我们可以看到左侧是主题市场,将鼠标移动到[女装/男装/内衣]这一栏目, ...

  5. python爬取cctalk视频_新媒体编辑怎么批量爬取数据

    说到数据采集,市面上很多采集工具,有商业的也有开源的各种工具,一搜一大堆,做新媒体的好不容易找到一些资料内容甚至图片,手工粘贴复制有时候很慢,一点都不友好,有没有办法能帮助新媒体从业者快速采集到想要的 ...

  6. python爬取歌曲教程_歌曲网站,教你爬取 mp3 和 lyric

    从歌曲网站,获取音频和歌词的流程: 1, 输入歌曲名,查找网站中存在的歌曲 id 2, 拿歌曲 id 下载歌词 lyric 简单的 url 拼接 3, 拿歌曲 id 下载音频 mp3 先用一个 POS ...

  7. python爬取携程网旅游_爬虫之携程网旅游信息爬取

    最近手又有点闲,闲着无聊就爬取了携程的信息,这个爬虫是我随手写的,各位可以看看. # -*- encoding=utf-8 -*- #爬取携程旅游信息 #2017/8/14 from bs4 impo ...

  8. python爬关键词百度指数_详解python3百度指数抓取实例

    百度指数抓取,再用图像识别得到指数 前言: 土福曾说,百度指数很难抓,在淘宝上面是20块1个关键字: 哥那么叼的人怎么会被他吓到,于是乎花了零零碎碎加起来大约2天半搞定,在此鄙视一下土福 安装的库很多 ...

  9. python 多分类情感词典_基于情感词典的文本情感分类

    基于情感词典的文本情感分类 传统的基于情感词典的文本情感分类,是对人的记忆和判断思维的最简单的模拟,如上图.我们首先通过学习来记忆一些基本词汇,如否定词语有"不",积极词语有&qu ...

最新文章

  1. linux笔记本不关机直接合上,笔记本电脑不关机直接合上行吗
  2. jquery 重写 html5 验证,Jquery前端滑动验证方式功能实现
  3. wordpress 当前栏目名,当前栏目的分类名
  4. Linux bashrc和profile的用途和区别
  5. unet图像分割_UNet++解读 + 它是如何对UNet改进 + 作者的研究态度和方式
  6. Testlink1.9.5的安装配置
  7. 25 个必须记住的SSH 命令
  8. dev-c 语言注释快捷键,devc 使用教程 注释
  9. 微信emoji表情编码的处理与储存
  10. 电大有计算机教程吗,中央电大 计算机平面设计(上)
  11. 联想拯救者y7000电池耗电快_联想拯救者Y7000P使用一周体验
  12. 键盘表和ASCII码表
  13. 求两个数的最小公倍数c语言程序,用C语言求两个数的最大公约数和最小公倍数...
  14. 有关聊天机器人的近两年的优秀论文和开源程序
  15. GPS设备获取的坐标转换成百度或者高德坐标
  16. ECharts 饼图颜色设置教程 - 4 种方式设置饼图颜色
  17. 哈哈,电驴资源 的下载问题
  18. iOS “此证书由未知颁发机构签名“
  19. 大牛养成指南(1):吃的草够多,你也能成为大牛
  20. 机器学习数据预处理之离群值/异常值:标准差法

热门文章

  1. 微课-面向对象程序设计(5课82分钟)
  2. 如何用计算机绘制地层剖面图,采矿工程剖面图计算机生成方法探讨
  3. 像专家一样思考,像专家一样实践
  4. plsql查询是否锁表Oracle
  5. 活塞运动c语言编程,动网格的相关知识介绍
  6. HTML5期末大作业:网站——个人网站介绍 (7页面带轮播特效)明星赵丽颖 学生DW网页设计作业源码 web课程设计网页规划与设计 大学生个人网站作业模板...
  7. TC、按键精灵、易语言接入百宝云快速开发注册码系统
  8. 网络云存储技术Windows server 2012 (项目十一 NAS服务器磁盘配额的配置与管理)
  9. Python sys 模块的 sys.argv
  10. Oracle Developer 论坛