excel学习库

excel表格_excel函数公式大全_execl从入门到精通

个人如何预测股价?用爬虫技术采集数据,老百姓能学会吗?

引言

使用爬虫技术采集数据时,采用两种方式进行爬取普通网站网页的内容。一种是使用request请求的方式,另一种是使用Scrapy框架进行爬取。

使用request请求方式进行爬取时,爬虫程序需要获取该资讯模块的url和有序数字,然后使用selector选择器获取当前页面的网页源代码,根据xpath语法解析出新闻资讯的url。

使用爬虫技术采集数据

当新闻内容是动态加载的时,需要借助web自动化测试工具selenium模拟浏览器行为。

在抓取目标网页时,爬虫程序会先请求一个session会话,再使用get方法发送HTTPGET请求,将请求返回的网页内容使用解析器配合xpath语法解析出所需要的关键文本内容,并将这些文本内容插入到MySQL数据库创建好的表中。

使用Scrapy框架进行爬取时,先在items.py文件中定义好要抓取的数据的变量名,然后在spiders目录下编辑新的python文件,用于获取和解析网页中所需的文本内容,最后在pipelines.py文件中将抓取到的文本内容插入到MySQL数据库创建好的表中。

使用的爬虫系统爬取了几百个新闻普通网站,包括通信类、机械类、家电类、电子类、医药类、化工类、地产类、有色钢铁类、传媒类、养殖类、汽车类、公用事业类、白酒类、环保类、煤炭类、宏观财经类、汽车类、建筑建材类、物流运输类、金融类。

轻工类和消费类等一些类别的网站。爬取的字段包括新闻所在的网站、新闻的url、新闻标题、新闻正文、新闻发布时间、新闻来源、新闻作者和新闻的html源码等字段。在对券商问询函进行爬取时,爬虫系统采集的债券问询函来自上海证券交易所。

深圳证券交易所和上海清算所三个网站。不同于一般网站的是,这三个网站上的资讯包含有word、pdf或者excel文件。采用request方式抓取发布时间、标题、文件url、公司名称、公司代码、事件类型、函号、涉及债券、涉及对象。

板块类型等信息,并将这些文本内容插入到MySQL数据库所创建的数据表的对应字段中。针对研报的爬取,资讯来自东方财富网的三个板块:个股研报、新股研报和行业研报。和债券问询函类似,研报中也可能包含文件附件。

采用request方式进行爬取,并获取以下信息:股票代码、股票简称、报告名称、网页url、网页内容、网页html、文件url、发布日期、机构、评级类型、评级变动、近一个月的研报数、盈利预测、申购日期、上市日期、发行价、发行市盈率、最新市盈率涨跌幅和板块类型等。

将这些文本内容插入到MySQL数据库创建好的数据表对应的字段中。微信公众号爬虫主要用于抓取微信公众号中发布的文章内容。

需要先关注需要爬取的公众号,然后登录网页版微信,在监听公众号列表中新资讯推送消息链接的同时,使用request方式请求资讯链接,并结合xpath语法解析出所需文本内容,将这些内容插入到MySQL数据库对应表的字段中。

为了保证爬虫正常运行,必须同时在线网页版微信和客户端微信。如果登录状态掉线或长时间执行的程序出现僵死状态,将无法继续抓取新公众号资讯,导致信息遗漏。因此需要邮件提醒并及时重启微信。

微信公众号爬虫已经爬取了将近1000个公众号,涵盖传媒、休闲服务、房地产、化工、医药生物、计算机、建筑材料、建筑装饰、公用事业、交通运输、通信、电子、商贸、家用电器、有色金属、钢铁、农林牧渔、纺织服装、轻工制造和电气设备等行业。

针对特定网站的爬取

针对企查查、天眼查等特定网站的爬取,使用request请求的方式进行数据获取。在爬取过程中,采用了IP代理和打码平台等措施,以保证爬虫的正常运行。

爬取的数据分别保存在多张表中,包括公司基本信息表、人员信息表、公司曾用名表、人员公司关系表、公司关系表和公司详情表。这些表分别用来保存公司的基本信息、人员的基本信息、公司的曾用名、人员与公司之间的关系、公司与公司之间的关系和公司的详情信息。

其中,公司基本信息表中的company_id字段不仅是主键,也是其他4个表的外键。在对爬虫进行监控时,通常会关注以下指标:首先是网站爬虫的更新时间,将当前时间与各个网站爬虫上次爬取新闻入库的时间差按照降序排列,时间差越长的排在越前。

这样可以找出最长时间未更新的网站爬虫,该指标每小时执行一次定时任务。其次是各个网站在12小时内爬取的新闻数量与史上同阶段12小时内爬取的新闻数量的比较。

例如现在是周二中午12点则比较当前周二0点到12点爬取的新闻数与历史上所有周二0点到12点爬取的新闻数平均值比较,该指标每12小时执行一次定时任务。

最后,对于入本地爬虫库的新闻,会对解析结果进行判断,如果解析失败,则将数据库表中的字段is_upload字段置为3方便日后排查。

判断解析结果是否正确的指标有以下几个:如果各个字段的值为None,则判定为解析失败;如果正文文本长度超过15万或者为0,则判定为解析失败;如果标题、网站、url长度为0,则判定为解析失败。

如果网页的html源码为空或者超过100万,则判定为解析失败;如果爬取到新闻的时间在新闻发布之前,则判定为解析失败;其余情况则视为解析成功。数据处理为了将从网站或公众号爬取到的文章内容和html标签投入生产环境,需要对其进行清洗。

去除不相干的信息,筛选出有效的正文内容,然后再次存入数据集的表中。数据处理分为网站新闻内容处理和公众号内容处理。网站新闻内容处理时,不同网站的广告形式可能不同,但同一网站中的广告形式相似。

因此,可以使用正则表达式匹配广告字符串,并将其从原文中删除,最后插入数据库相应的字段。

类似的方法可以用于处理其他网站。对公众号内容进行处理时,公众号新闻的特征为:微信公众号广告通常出现在开头和结尾,文本中间大概率不会出现广告;无法仅从图片url中解析是否为广告;对于开头的图片。

可能会出现类似于“点击上方关注”、“关注公众号发现更多”、“特别声明”、“本报告导读”、“更多精彩节目”等字样;对于结尾的图片,可能会出现类似于“更多推荐”、“推荐阅读”、“版权申明”、“相关报告”、“如欲转载文章”等字样。

正文结束后一般为广告,会出现类似于“更多推荐”、“推荐阅读”、“版权申明”、“相关报告”、“如欲转载文章”等字样。以上是大多数公众号可能出现的广告关键词,可以使用正则表达式匹配广告关键词。

对于文章开头的广告,需要剔除文章起始词至开头广告关键词的内容;对于文章结尾的广告,需要剔除结尾广告关键词至文章末端的内容。对于“扫码关注公众号”广告,可以使用二维码识别技术将含有二维码的图片全部去除,然后再使用规则匹配的方式去除广告。

对于某些特殊的公众号文章,广告类型可能千变万化,需要观察广告的位置,并使用正则表达式匹配的方式去除特定的广告。在运用自然语言处理技术,对“数据采集处理模块”中的金融相关数据进行处理。

其主要任务包括以下几个方面:金融语料库的建立、金融分词库的建立、金融词向量的学习、融实体的识别、金融实体关系的抽取、金融实体的链接、金融事件的抽取和金融事件库的构建。
金融语料库的建立中建立金融语料库的过程包括清洗和整理大量文本数据,以形成可用于语言学研究和经验主义语言研究的基础资源。

金融语料库包括清洗后的新闻信息和公众号信息、问询函信息、公司研报信息以及从特定网站中爬取的公司人员信息等,总计包含上千万条新闻和公众号信息,几十万条问询函信息,几十万条公司研报信息,两千多万条特定网站中的公司人员信息。

金融分词库的建立的金融分词库的建立过程,首先整理了约一万条数据的小数据集,并利用Jieba分词工具、Thulac分词工具和pkuseg分词工具对金融语料库中的非结构化数据进行分词。然后,通过程序和人工分析三种分词工具的结果。

发现Jieba分词在某些场景下无法进行细致的划分,Thulac分词的粒度较细,而pkuseg分词的粒度较粗。同时,三种分词工具都会出现不准确的情况。

总体而言,Thulac的分词效果较好,因此最终采用Thulac分词工具对非结构化数据进行分词。在具体分析三种分词出现错误的过程中,发现分词工具会错误地将许多金融领域的专有名词、公司名、产品名等词汇进行分词。

为此,在分词之前,本文构建了一个金融分词词典库,并将其结合到分词工具中以增加分词的准确性。金融词向量的学习为了对金融语料中的分词结果进行表示,需要使用词向量模型。

使用了五种不同的词向量训练方法,包括Word2vec、GloVe、ELMo、fastText和BERT。针对这五种方法,进行了参数调试包括词向量的维度、词频大小、以及前后观察的窗口大小。

接着,在词向量评测任务上进行实验比较,最终选用120维的fastText词向量来对金融语料进行表示。金融实体的识别金融实体识别是一个关键的任务,需要先构建金融实体的数据集并进行标注。

使用BIOES方法进行标注,标注了两种金融数据集:Long-Fin-News和Short-Fin-News。BIOES方法是目前最通用的命名实体标注方法,其中B表示这个词处于一个实体的开始,I表示内部,O表示外部,E表示结束位置,S表示这个词是自己就可以组成一个实体。

这两个数据集分别包括不同数量的训练集和测试集,涵盖了金融领域常见的实体类型,包括公司、人名、地点、产品和时间等。其中,公司实体分为A股公司和其他公司。在标注好数据之后,需要训练模型来对金融实体进行识别。

使用了多种经典的模型,包括BiLSTM+CRF、FlAIR、Bert和SDI-NER。经过实验比较,最终选择SDI-NER模型对金融实体进行识别。金融实体关系的抽取是指从文本中抽取出一对实体,并确定它们之间的关系。

结语

金融实体的链接可以划分为共指消解和实体消岐这两个子任务。共指消解是指根据实体表述是否指向同一个实体,对命名实体识别出的实体进行聚类;在公开任务中,指消解还需要考虑代词。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接