python股票分析挖掘预测金融大数据获取方法和实现(2)

本人股市多年的老韭菜了,各种股票分析书籍,技术指标书籍阅历无数,萌发想法,何不自己开发个股票预测分析软件,选择python因为够强大,它提供了很多高效便捷的数据分析工具包,

我们已经初步的接触与学习其中数据分析中常见的3大利器---Numpy,Pandas,Matplotlib库。

数据是万物之源,我们做股票分析,首要条件是获取最新的,最全面的金融数据,我们才能进行下一步开发。

我们获取数据主要有二大渠道,爬虫爬取金融网站数据和金融网站主动提供API接口方式获得,上一章简单介绍一下金融数据接口的使用方法,这章重点讲讲爬虫抓取数据技巧和方法

爬虫抓取数据方法:

从金融接口获取数据方法简单,但是属于被动的,特别是免费用户受到的限制很大,所以我们学习一下爬虫主动获取金融网站数据,

 爬虫技术是这几年特别热门的技术,想要学精学好,需要相当的时间和精力,我们这里先了解个大概。

爬虫解析数据有很多种,爬取不同的数据,返回的数据类型不一样,有htmljsonxml文本字符串)等多种格式!简单的介绍几种

(1)网络爬虫常见用法

(1)Xpath获取

XPath,全称XML Path Language,即XML 路径,它是⼀⻔XML ⽂档中查找信息的语⾔。最初是⽤来搜寻XML ⽂档的,但同样适⽤于HTML ⽂档的搜索。所以在做爬⾍时完全可以使⽤XPath做相的信息抽取。

安装:pip install lxml

获取请求:

url = 'https://pic.netbian.com/4kmeinv/index_5.html'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}

 注意:headers里面的浏览器版本必须对应个人开发者电脑版本,要不可能爬取错误

完整代码:

import requests
from lxml import etree
import osurl = 'https://pic.netbian.com/4kmeinv/index_5.html'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
# 不这样搞会乱码
response = requests.get(url=url, headers=headers)
# 手动设定响应数据的编码格式
# 普通的乱码可以这样搞,但这个不行,考虑换另一种方式
# response.encoding = 'utf-8'
page_text = response.text# 数据解析:src的属性值  alt属性
tree = etree.HTML(page_text)
li_list = tree.xpath('//div[@class="slist"]/ul/li')
# 创建一个文件夹
if not os.path.exists('./picLibs'):os.mkdir('./picLibs')for li in li_list:img_src = 'http://pic.netbian.com' + li.xpath('./a/img/@src')[0]img_name = li.xpath('./a/img/@alt')[0] + '.jpg'# 通用处理中文乱码的解决方案img_name = img_name.encode('iso-8859-1').decode('gbk')# print(img_name,img_src)# 请求图片进行持久化存储img_data = requests.get(url=img_src, headers=headers).contentimg_path = 'picLibs/' + img_namewith open(img_path, 'wb') as fp:fp.write(img_data)print(img_name, '下载成功!!!')
fp.close()运行结果:
刘诗诗 唯美高清美女4k壁纸.jpg 下载成功!!!
刘诗诗 一手托腮 4k高清美女壁纸.jpg 下载成功!!!
刘诗诗 晚上 高颜值美女4k壁纸.jpg 下载成功!!!
刘诗诗 超高清美女4k壁纸.jpg 下载成功!!!
高颜值气质美女 侧脸 刘诗诗4k壁纸.jpg 下载成功!!!

已经成功下载到本地,爬取成功 

(2) requests方法

安装requests库

只需要在终端中输入pip install requests。为了确保requests库已经成功安装

代码案例

这个例子requests.get()从金融网站爬取金融数据保存到本地


import re,requests
import pandas as pd
url = "http://94.push2.eastmoney.com/api/qt/clist/get?cb=jQuery1124040399874179311124_1685159655748&pn=1&pz=6000&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&wbp2u=|0|0|0|web&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23,m:0+t:81+s:2048&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1685159655749"
print("\n1:正在爬取数据...")
data = requests.get(url).text
p = re.compile(r'(\"f\d*\":.+?)[,}]')
result = p.findall(data)
print("\n2:数据爬取成功!!!")
stock = {'代码':[],'名称':[],'最新价':[],'涨跌幅%':[],'涨跌额':[],'成交量(手)':[],'成交额':[],'振幅%':[],'最高':[],'最低':[],'今开':[],'昨收':[],'量比':[],'换手率%':[],'市盈率':[],'市净率':[]}
print("\n3:数据正在导出...")
#print(result)
for i in range(1,len(result),31):stock['代码'].append(result[i+10][6:])stock['名称'].append(result[i+12][6:])stock['最新价'].append(result[i][5:])stock['涨跌幅%'].append(result[i+1][5:])stock['涨跌额'].append(result[i+2][5:])stock['成交量(手)'].append(result[i+3][5:])stock['成交额'].append(result[i+4][5:])stock['振幅%'].append(result[i+5][5:])stock['最高'].append(result[i+13][6:])stock['最低'].append(result[i+14][6:])stock['今开'].append(result[i+15][6:])stock['昨收'].append(result[i+16][6:])stock['量比'].append(result[i+8][6:])stock['换手率%'].append(result[i+6][5:])stock['市盈率'].append(result[i+7][5:])stock['市净率'].append(result[i+20][6:])df = pd.DataFrame(stock)df.to_csv(f'示例.csv', encoding='utf-8-sig', index=None)print("\n4:数据导出成功!!!")
input()

(3)BeautifulSoup

Python的一个HTML或XML的第三方解析库,可以用它方便地从网页中提取数据。它提供一些简单的、Python式的函数来处理导航、搜索、修改分析树等功能。它是一个工具箱,利用它可以省去很多烦琐的提取工作,提高了解析效率。

安装BeautifulSoup库和lxml库:

pip install BeautifulSoup4 和pip install lxml

下面这个案例用BeautifulSoup爬取数据

文件头请求headers

      headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}content = requests.get(url, headers=headers)return content

注意:headers里面的浏览器版本必须对应个人开发者电脑版本,要不可能爬取错误

详细代码:

import requests
from bs4 import BeautifulSoup
import os# 导入所需要的模块
class mzitu():def all_url(self, url):html = self.request(url)  ##all_a = BeautifulSoup(html.text, 'lxml').find('div', class_='all').find_all('a')for a in all_a:title = a.get_text()print('------开始保存:', title)path = str(title).replace("?", '_')  ##替换掉带有的?self.mkdir(path)  ##调用mkdir函数创建文件夹!这儿path代表的是标题titlehref = a['href']self.html(href)def html(self, href):  ##获得图片的页面地址html = self.request(href)max_span = BeautifulSoup(html.text, 'lxml').find('div', class_='pagenavi').find_all('span')[-2].get_text()# 这个上面有提到for page in range(1, int(max_span) + 1):page_url = href + '/' + str(page)self.img(page_url)  ##调用img函数def img(self, page_url):  ##处理图片页面地址获得图片的实际地址img_html = self.request(page_url)img_url = BeautifulSoup(img_html.text, 'lxml').find('div', class_='main-image').find('img')['src']self.save(img_url)def save(self, img_url):  ##保存图片name = img_url[-9:-4]img = self.request(img_url)f = open(name + '.jpg', 'ab')f.write(img.content)f.close()def mkdir(self, path):  ##创建文件夹path = path.strip()isExists = os.path.exists(os.path.join("mzitu2", path))if not isExists:print('建了一个名字叫做', path, '的文件夹!')os.makedirs(os.path.join("mzitu2", path))os.chdir(os.path.join("mzitu2", path))  ##切换到目录return Trueelse:print(path, '文件夹已经存在了!')return Falsedef request(self, url):  ##这个函数获取网页的response 然后返回headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}content = requests.get(url, headers=headers)return content# 设置启动函数
def main():Mzitu = mzitu()  ##实例化Mzitu.all_url('http://www.mzitu.com/all')  ##给函数all_url传入参数main()

爬取方法还有多种,不一一例举

(2)网络爬虫常用框架

爬虫框架可以理解为一些爬虫项目的半成品,已经将爬虫功能主要功能写好,留下一些api接口来让开发者调用

1. Scrapy


scrapy官网:https://scrapy.org/
scrapy中文文档:https://www.osgeo.cn/scrapy/intro/o
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

其最初是为了 页面抓取(更确切来说, 网络抓取)所设计的, 也可以应用在获取API所返回的数据(例如Amazon Associates Web Services ) 或者通用的网络爬虫。

Scrapy框架是一套比较成熟的Python爬虫框架,可以高效的爬取web页面并提取出结构化数据,用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。

 

2. PySpider


PySpider 中文网:http://www.pyspider.cn
PySpider 官网:http://docs.pyspider.org
PySpider 演示:http://demo.pyspider.org
PySpider 源码:https://github.com/binux/pyspider

PySpider是一个国人编写的强大的网络爬虫系统并带有强大的WebUI,其用python实现的功能强大的网络爬虫系统,能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储,还能定时设置任务与任务优先级等。

pyspider 是一个用python实现的功能强大的网络爬虫系统,能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储,还能定时设置任务与任务优先级等。

 

3. Portia


官网:https://portia.scrapinghub.com/
Portia是一个开源可视化爬虫工具,可让您在不需要任何编程知识的情况下爬取网站!简单地注释您感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。其主要特征是:

Portia是一款不需要任何编程知识就能爬取网页的爬虫框架,只要将相关信息填好之后,就可以爬取网站了。

基于scrapy 内核
可视化爬取内容,不需要任何开发专业知识
动态匹配相同模板的内容

 

4 Newspaper


官方文档:Quickstart - newspaper 0.0.2 documentation
github地址:https://github.com/codelucas/newspaper
Newspaper可以用来提取新闻、文章和内容分析。使用多线程,支持10多种语言等。作者从requests库的简洁与强大得到灵感,使用python开发的可用于提取文章内容的程序。支持10多种语言并且所有的都是unicode编码。

Newspaper框架是一个用来提取新闻、文章以及内容分析的Python爬虫框架。

 

5. Beautiful Soup


官方文档:Beautiful Soup 4.4.0 文档
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间。这个我是使用的特别频繁的。在获取html元素,都是bs4完成的。

Beautiful Soup整合了一些常用的爬虫需求,可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方式,会帮你节省数小时甚至数天的工作时间。

 

6. Grab


官网:https://grablib.org/en/latest/
Grab是一个用于构建Web刮板的Python框架。借助Grab,您可以构建各种复杂的网页抓取工具,从简单的5行脚本到处理数百万个网页的复杂异步网站抓取工具。Grab提供一个API用于执行网络请求和处理接收到的内容,例如与HTML文档的DOM树进行交互。

Grab可以构建各种复杂的网页抓取工具,从简单的5行脚本到处理数百万个网页的复杂异步网站抓取工具。

还有多种爬虫抓取方法和爬虫工具我就不一一介绍了,大家选择合适自己的学习开发就行,爬虫技术是目前热门,但是要学好,需要漫长的时间和精力,整理和编写了几种不同的爬虫技术从网上爬取数据的代码,欢迎大家下载!! 

 

谢谢大家,相互交流学习!!1 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/592148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DDD+SOA的事件驱动微服务读写分离架构

DDD DDD是Eric Evans于2003年出版的书名,同时也是这个架构设计方法名的起源 Eric Evans “领域驱动设计之父”,世界杰出软件建模专家。 他创建了Domain Language公司,致力于帮助公司机构创建与业务紧密相关的软件。 他在世界各地宣讲领域驱动…

DrGraph原理示教 - OpenCV 4 功能 - 二值化

二值化,也就是处理结果为0或1,当然是针对图像的各像素而言的 1或0,对应于有无,也就是留下有用的,删除无用的,有用的部分,就是关心的部分 在图像处理中,也不仅仅只是1或0,…

test dbtest-02-Liquibase 是一个数据库变更管理工具

拓展阅读 DbUnit-01-数据库测试工具入门介绍 database tool-01-flyway 数据库迁移工具介绍 什么是 Liquibase? Liquibase 是一种开源的数据库架构变更管理解决方案,它使你能够轻松地管理数据库变更的修订版本。 Liquibase使得参与应用程序发布流程的…

采用 SO-8 封装的 LDO(如 MIC5209BM),用于密封环境时,为保证热应力降额满足要求,通常热耗不应超过 0.3W。

在密封环境中使用SO-8封装的LDO(如MIC5209BM)时,通常会对热耗进行限制,以确保热应力降额满足要求。其主要原因是; 封装热阻 SO-8封装的热阻较高,这意味着它在将内部产生的热量传递到周围环境时效率不高。热阻可以用θJA(连接到环境的热阻)和θJC(连接到芯片的热阻)来…

element-ui table-自定义表格某列的表头样式或者功能

自带表格 自定义表格某列的表头样式或者功能 <el-table><el-table-column :prop"date">//自定义表身每行数据<template slot-scope"scope">{{scope.row[scope.column.label] - ? - : scope.row[scope.column.label]}}</template>…

向爬虫而生---Redis 基石篇1 <拓展str>

前言: 本来是基于scrapy-redis进行讲解的,需要拓展一下redis; 包含用法,设计,高并发,阻塞等; 要应用到爬虫开发中,这些基础理论我觉得还是有必要了解一下; 所以,新开一栏! 把redis这个环节系统补上,再转回去scrapy-redis才好深入; 正文: Redis是一种内存数据库&#xff0c…

Spark导入报错:object security is not a member of package org.apache.kafka.common

引言 build spark里自带的示例项目时报了这样一个错&#xff1a;object kafka is not a member of package org.apache&#xff0c;排查后发现是因为添加的jar依赖里没有kafka这一项&#xff0c;去Maven下载了对应版本的Kafka jar包后放置在examples\jars底下却仍然报错object …

Java经典框架之SpringSecurity

SpringSecurity Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机&#xff0c;Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. SpringSecurity基本应用…

wps将姓名处理格式为:姓**

1.打开wps&#xff0c;在要处理数据右侧一个单元格 输入公式&#xff1a;LEFT(A1,1)&"**"&#xff0c;然后回车 2.按住ctrl和处理好的数据的右下角小方框&#xff0c;往下拖动即可生成格式为&#xff1a;姓** 格式的数据 3.复制生成的数据&#xff0c;右键选择 “…

springboot日志

1、日志用途 故障排查和调试&#xff1a;当项目出现异常或者故障时&#xff0c;日志记录可以快速帮助我们定位到异常的部分以及知道异常的原因。性能监测和优化&#xff1a;通过在关键代码路径中添加日志记录&#xff0c;可以了解应用程序的性能表现&#xff0c;并根据性能表…

MT8766安卓核心板规格参数_MTK8766核心板模块方案定制

MT8766安卓核心板&#xff1a;高性能、稳定可靠、集成度高的一体化解决方案 MT8766安卓核心板采用联发科MTK8766四核4G模块方案&#xff0c;是一款高度集成的安卓一体板。四核芯片架构&#xff0c;主频可达到2.0GHz&#xff0c;支持国内4G全网通。12nm制程工艺&#xff0c;支持…

引导过程与服务控制

一、开机启动的完整过程 bios加电自检测-------mbr------grub----------加载内核文件------------启动第一个进程 简述&#xff1a;加电后bios程序会自检硬件&#xff0c;硬件无故障&#xff0c;会根据第一启动项去找内核&#xff0c;一般来说&#xff0c;第一启动项是硬盘&a…

网络端口(包括TCP端口和UDP端口)的作用、定义、分类,以及在视频监控和流媒体通信中的定义

目 录 一、什么地方会用到网络端口&#xff1f; 二、端口的定义和作用 &#xff08;一&#xff09;TCP协议和UDP协议 &#xff08;二&#xff09;端口的定义 &#xff08;三&#xff09;在TCP/IP体系中&#xff0c;端口(TCP和UDP)的作用 &#xff08;…

使用GPTs+Actions自动获取第三方数据

目录 安装插件与GPT对话联网插件首先,创建GPTs。 Voxscript 官网:https://voxscript.awt.icu/index.htmlOpenAI Schema:https://voxscript.awt.icu/swagger/v1/swagger.yamlServer URL: servers: url: https://voxscript.awt.icu安装插件 要使用这个插件&

HarmonyOS开发环境配置

设备要求 CPU内存&#xff1a;12GB以上电脑需要支持虚拟化并开启虚拟化功能硬盘可用空间30GB以上 安装编辑器的时候需要下载SDK、ohpm依赖确保网络畅通。 HarmonyOS开发环境安装步骤如下 下载并安装DevEco Studio&#xff1a;DevEco Studio是华为官方提供的集成开发环境&am…

干洗店洗鞋店小程序核心功能有哪些?

在繁忙的生活中&#xff0c;我们的鞋子常常承载着风尘仆仆的故事。而洗鞋小程序&#xff0c;就是那个让您的鞋子焕然一新的魔法师。通过这个小程序&#xff0c;您可以在线预约、支付&#xff0c;查询洗鞋订单&#xff0c;并与洗鞋店铺进行互动&#xff0c;轻松享受专业的洗鞋服…

HarmonyOS4.0系统性深入开发12 卡片数据交互说明

卡片数据交互说明 ArkTS卡片框架提供了updateForm()接口和requestForm()接口主动触发卡片的页面刷新。 接口是否系统能力约束updateForm否1. 提供方调用。2. 提供方仅允许刷新自己的卡片&#xff0c;其他提供方的卡片无法刷新。requestForm是1. 使用方调用。2. 仅允许刷新添加…

数字图像处理(3)——频域图像增强

&#x1f525;博客主页&#xff1a;是dream &#x1f680;系列专栏&#xff1a;深度学习环境搭建、环境配置问题解决、自然语言处理、语音信号处理、项目开发 &#x1f498;每日语录&#xff1a;贤才&#xff0c;难进易出&#xff1b;庸才&#xff0c;易进易初出&#xff1b;…

Character Controller Smooth

流畅的角色控制器 Unity的FPS解决方案&#xff01; 它是一种具有非常平滑运动和多种设置的解决方案&#xff1a; - 移动和跳跃 - 坐的能力 - 侧翻角度 - 不平整表面的处理 - 惯性守恒 - 重力 - 与物理物体的碰撞。 - 支持没有家长控制的平台 此解决方案适用于那些需要角色控制器…

【python】如何将一个dict词典转换为dataframe

【背景】 flask项目中远程API返回一个Json结构,用.json方法转化后得到一个dict,想把这个dict进一步转换为dataframe做后续处理。 【方法】 不看不知道,一看简单得吓一跳。 import pandas as pd# 示例字典 data = {Name: [Alice, Bob, Charlie],Age: