获取汇率数据

  • 1 爬取的内容
    • 1.1 爬取的界面
  • 2 爬取的过程
    • 2.1 导入需要的包
    • 2.2 获取网页数据
    • 2.3 数据格式更改
    • 2.4 获取所有数据并传入数据库

1 爬取的内容

根据需要美元,英镑,以及欧元对人民币的汇率,网站比较简单。分为三个网站,地址如下,获取当日页面里的数据,没有太多复杂的解析。三个网站的规则是一样的,里面的解析方法也和步骤也是相同的。
欧元对人民币
英镑对人民币
美元对人民币

1.1 爬取的界面


网页右键点击,选择检查,查看网页代码,找到标题和对应数据所在的位置,下面就进行相关数据的获取

2 爬取的过程

2.1 导入需要的包

a0_mysql是我上一个文章里, 爬虫2_python连接mysql数据库代码,主要是连接数据库,将获取到的数据直接导入到数据库里。

# coding: utf-8
from pathlib import Path
import os
import pandas as pd
import requests
from bs4 import BeautifulSoup
import warnings
warnings.filterwarnings('ignore')
import os
from a0_mysql import del_sql,get_sql_data,to_sql
# 可以自定义代理,一般本地使用就没有用到代理,如果是一些工作内容或者其他内网需要开通,会需要个代理。
proxies = {'http': "http://代理地址", 'https': 'https://代理地址'}

2.2 获取网页数据

'''
输入:
url:     网页地址
headers:  一般的头部信息
proxn:    是否使用代理,如果是true,则使用代理输出:     如1.1中的表格里的数据
'''
def get_data(url, headers , proxn):# 是否使用代理if proxn =='true':req = requests.get(url=url, headers=headers, proxies=proxies)else:req = requests.get(url=url, headers=headers)soup = BeautifulSoup(req.text, 'lxml')# 在检查中找到数据存放在 该class value 下body = soup.find_all(class_='genTbl closedTbl historicalTbl')[0].find_all('tr')s = []for  j  in range(len(body)):a = [i for i in body[j].text.split('\n')  if i!='']s.append(a)data = pd.DataFrame(s[1:],columns=s[0])return data

简单的进行调用

head ={'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'}
proxn = 'false'# 不使用代理
url_usd = 'https://cn.investing.com/currencies/usd-cny-historical-data'  # 美元
df_usd  = get_data(url_usd, head, proxn)

结果如下:

2.3 数据格式更改

鉴于需要将时间里的年月日,改为横线,即2020年1月1日改为2020-01-01。 python里关于时间的处理也是很多种技巧和方法。这里写了一个傻瓜式的更改。

def trans(a):a = a.replace('年', "-")a = a.replace('月', "-")a = a.replace('日', "")a1 = a.split('-')[0]a2 = a.split('-')[1]a3 = a.split('-')[2]if len(str(a2)) < 2:a2 = '0' + str(a2)else:a2 = str(a2)if len(str(a3)) < 2:a3 = '0' + str(a3)else:a3 = str(a3)a = a1 + '-' + a2 + '-' + a3return a

经过处理后的数据如下所示:

2.4 获取所有数据并传入数据库

获取美元,英镑以及欧元对人民币的数据。并将更改时间后的数据存入到mysql数据库中。

def today(headers, sheet_name, proxn):url_usd = 'https://cn.investing.com/currencies/usd-cny-historical-data'  # 美元url_gbp = 'https://cn.investing.com/currencies/gbp-cny-historical-data'  # 英镑url_eur = 'https://cn.investing.com/currencies/eur-cny-historical-data'  # 欧元df_usd  = get_data(url_usd, headers,proxn)df_gbp = get_data(url_gbp, headers,proxn)df_eur = get_data(url_eur, headers,proxn)df_usd['币种'] = 'USD_CNY'df_gbp['币种'] = 'GBP_CNY'df_eur['币种'] = 'EUR_CNY'df_usd['日期'] = [trans(i) for i in df_usd['日期']]df_gbp['日期'] = [trans(i) for i in df_gbp['日期']]df_eur['日期'] = [trans(i) for i in df_eur['日期']]df_usd['涨跌幅'] = [round(0.01 * float(i.replace('%', '')), 6) for i in df_usd['涨跌幅']]df_gbp['涨跌幅'] = [round(0.01 * float(i.replace('%', '')), 6) for i in df_gbp['涨跌幅']]df_eur['涨跌幅'] = [round(0.01 * float(i.replace('%', '')), 6) for i in df_eur['涨跌幅']]today_usd = tuple(df_usd['日期'].unique().tolist())today_gbp = tuple(df_gbp['日期'].unique().tolist())today_eur = tuple(df_eur['日期'].unique().tolist())'''1 删除数据库中这些日期的数据'''sql2_usd = """ DELETE from pur_汇率 WHERE  币种 = 'USD_CNY'and 日期  IN {0}""".format(today_usd)sql2_gbp = """ DELETE from pur_汇率 WHERE  币种 = 'GBP_CNY'and 日期  IN {0}""".format(today_gbp)sql2_eur = """ DELETE from pur_汇率 WHERE  币种 = 'EUR_CNY'and 日期  IN {0}""".format(today_eur)del_sql(sql2_usd)del_sql(sql2_gbp)del_sql(sql2_eur)'''2 数据存入'''to_sql(df_usd,sheet_name)to_sql(df_gbp,sheet_name)to_sql(df_eur,sheet_name)

如上是爬取的所有过程。代码存放github的地址:c1_汇率

爬虫3_获取汇率数据相关推荐

  1. 分布式网络爬虫实例——获取静态数据和动态数据

    前言 刚刚介绍完基于PyHusky的分布式爬虫原理及实现,让我们具备了设计分布式网络爬虫方便地调动计算资源来实现高效率的数据获取能力.可以说,有了前面的基础,已经能够解决互联网上的绝大部分网站的数据获 ...

  2. 对豆瓣进行爬虫来获取相关数据(分别保存到Excel表格和sqlite中)

    1.存入Excel表格的代码: from bs4 import BeautifulSoup #网页解析,获取数据 import re #正则表达式,进行文字匹配 import urllib.reque ...

  3. python能获取汇率数据吗_用Python爬虫实时获取外汇牌价

    最近外汇波动又比较大了, 我们公司是参考中国银行网站上公布的外汇牌价,由人工定期查看比对,来修改ERP数据,实在是有点累. 于是用Python写了个爬虫程序,自动获取外汇牌价. 程序很短,但是花了半天 ...

  4. python获取人民币汇率数据

    近日正在做一个货币转换的demo 苦于获取汇率数据 久闻爬虫大名 学习后写了个获取数据的python脚本 test_py.py: -- coding:utf-8 -- import re import ...

  5. R语言基础(3)——获取金融数据及处理分析

    文章目录 quantmod包 getSymbols()函数 getSymbols()函数参数的特例 获取股票数据 1. 股票日交易数据 2. 各种指数的日数据 3. 股息数据 4. 除权除息数据 5. ...

  6. python证券交易数据接口_实战 | Python获取股票交易数据

    项目介绍 看到标题大家的第一反应估计是怎么用爬虫来获取股票交易数据,要获取股票交易数据确实是需要用爬虫没错,不过还有比使用爬虫更加方便的方式.今天要给大家介绍的是一个专门用来获取国内股票交易数据的开源 ...

  7. Python量化入门系列:获取数据-Tushare获取股票数据(1)

    做量化用到的数据一般包括二级市场各种数据.宏观经济各种数据以及一些特殊需求的网页数据,需要有通过python获取数据.常见的获取数据方式有三种: 一是通过SQL语言从数据库获取数据,适用于二级市场和宏 ...

  8. .net里鼠标选中的text数据怎么获取_Python数据科学实践 | 爬虫1

    点击上方蓝色字体,关注我们 大家好,基于Python的数据科学实践课程又到来了,大家尽情学习吧.本期内容主要由智亿同学与政委联合推出. 前面几章大家学习了如何利用Python处理与清洗数据,如何探索性 ...

  9. 爬虫侵入计算机系统,【探讨】利用“爬虫技术”获取数据行为的刑事考量 ——以一起非法获取计算机信息系统数据案为例...

    在本案中最为主要的争议焦点是"公开的信息"是否属于非法获取计算机信息系统数据中的犯罪对象.非法获取计算机信息系统数据罪的保护法益是计算机信息系统安全和数据安全.那么信息是否等同于数 ...

  10. python Chrome + selenium自动化测试与python爬虫获取网页数据

    一.使用Python+selenium+Chrome 报错: selenium.common.exceptions.SessionNotCreatedException: Message: sessi ...

最新文章

  1. 【Android 插件化】Hook 插件化框架 ( 通过反射获取 “宿主“ 应用中的 Element[] dexElements )
  2. C++ Opengl纹理混合源码
  3. andriod的apk文件相关的编译反编译工具
  4. 简述LINQ的发展历程
  5. r语言remarkdown展示图_R语言—自动报告Markdown笔记
  6. 前端学习(3290):react hook state-hook传入对象
  7. android转流媒体,android 4.4中的流媒体渲染过程
  8. Path(0)贝塞尔曲线
  9. python实现基于 Adaboost 框架来构建自定义集成模型【自定义基分类器模型】
  10. 简单翻译工具--必应词典第三方api使用方法
  11. Java开发常用的在线工具
  12. Unity - Timeline 自定义剪辑,轨道,混合轨道,Inspector属性显示(使用Default Playables辅助工具)
  13. 数据中心液冷方式优缺点对比及浸没式液冷表面强化处理
  14. 使用acmesh免费开启https(详细概念介绍与操作步骤记录)
  15. 分享几个实用的神器 APP
  16. YOLO V2得到的启发
  17. 管理学书籍推荐:这10本优秀的管理类书籍最值得一读
  18. Servlet中关于Session数据存储遇到的数据转换问题
  19. net-java-php-python-口试考试系统计算机毕业设计程序
  20. 都2021年了!为什么一遇到热点事件,微博就会时不时的崩一下?

热门文章

  1. JAVA计算机毕业设计政府会议管理系统Mybatis+系统+数据库+调试部署
  2. openssl官网-下载安装过程
  3. Token的组成部分
  4. 【DX12】DirectX Math库 Vector和Matrix类型 XMVECTOR、XMMATRIX
  5. Jenkins进阶系列之——02email-ext邮件通知模板
  6. 使用标准输出流(system.out)和打印流 (PrintWriter)来读取txt文件
  7. 群晖Docker容器“failed to initialize logging driver“解决办法
  8. 基于毫米波雷达的手势识别原理
  9. 豚鼠学习HTML前端第一周
  10. 【vue】Layim 配置请求头参数