python爬虫获取各币种最新汇率并写入mysql表

简介: 本Python脚本通过requests和BeautifulSoup爬取实时汇率数据,利用pandas进行数据清洗与处理,并通过SQLAlchemy将结果存入MySQL数据库,实现数据自动化采集与存储。
# 导入所需的工具包
import datetime
from urllib.parse import quote_plus

import requests
from bs4 import BeautifulSoup
import numpy as np
import pandas as pd
from pymysql import connect
from sqlalchemy import create_engine,types

# 模拟请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}

# 网站地址
url = 'https://www.shishihuilv.com/zuixin/'

# 获取响应体
response = requests.get(url=url,headers=headers,timeout=60)


# 获取响应体中对应的标签内容
soup = BeautifulSoup(response.text, 'html.parser')
span_tags = soup.find_all('span')

span_contents = [span.get_text(strip=True) for span in span_tags]
span_contents = span_contents[0:-1]  # 最后一个元素为网页注脚,不需要

# 按照4个元素一组进行拆分
list_num = int(len(span_contents) / 4)
result = np.array_split(span_contents, list_num)
result = [arr.tolist() for arr in result]

# 定义DataFrame的列名
columns = ['currency_for_exchange','currency_code','last_exchange_rate','reverse_exchange_rate','rate_date']
df = pd.DataFrame(columns=columns)

# 为数据添加汇率的日期
for i in result:
    # 添加数据日期
    i.append(datetime.date.today())
    df.loc[len(df)] = i

# 这一步是为了处理密码中带有@符号
password = quote_plus('Abc@123')
# 替换成要链接的库的url、post和user_name,组合成字符串
connect_str = "mysql+pymysql://username:{}@127.0.0.0:3306/testdb".format(password)
# 创建执行引擎
engine = create_engine(connect_str)

# 指定列的数据类型
dtype = {
    'currency_for_exchange': types.VARCHAR(64),
    'currency_code':types.VARCHAR(32),
    'last_exchange_rate':types.DECIMAL(10,6),
    'reverse_exchange_rate':types.DECIMAL(10,6),
    'rate_date':types.DATE
}

# 将DataFrame的数据内容写入数据库表中
df.to_sql(
    name='ods_currency_exchange_rate_df',   # 要写入的表名,列数量要和字段数一致
    con=engine,
    if_exists='replace',
    index=False,
    dtype=dtype,
    chunksize=500
)
相关文章
QT实现雷达图和摇杆图
小伙伴们大家好,之前我上传了一个资源(骗积分用的),但是没有效果图和博文与之对应,所以大家应该是都不敢下载的吧, 先上资源链接 : 一个雷达图和一个摇杆图(方向可以根据你自己的需要增加)资源 再上效果图。
1060 1
QT实现雷达图和摇杆图
|
4月前
|
弹性计算 API 数据安全/隐私保护
阿里云服务器如何续费?续费有没有优惠?通常具体有哪些优惠?
本文主要介绍阿里云服务器包年包月实例的续费方法,包括PC端、阿里云App端和API/CLI续费的具体步骤。同时,文章还探讨了续费优惠的类型及规则,如限时活动优惠、长期折扣政策、节省计划与预留实例券等,帮助用户最大化利用优惠,降低长期使用成本。此外,还介绍了续费过程中的注意事项,如自动续费限制、续费变配选项等,确保云服务器的稳定运行和数据安全。
|
12月前
|
JSON API UED
汇率查询API实战指南:通过Python调用获取多国汇率信息
本文介绍如何通过 Python 快速集成多币种汇率查询接口,实现实时获取全球主要货币汇率数据。适用于跨境电商价格换算、国际贸易结算等场景,帮助提升用户体验并规避汇率波动风险。
1987 0
汇率查询API实战指南:通过Python调用获取多国汇率信息
|
8月前
|
消息中间件 缓存 监控
拼多多平台API的功能及应用场景
拼多多开放API提供商品、订单、营销等核心功能接口,支持自动化运营与数据集成。涵盖商品同步、订单物流处理、优惠券秒杀、销售分析等场景,结合ERP/WMS系统可实现高效管理。通过OAuth认证、签名验证保障安全,建议采用异步处理、本地缓存与重试机制优化性能,助力商家提升运营效率与决策能力。
获取中国某省份的ip地址,随机IP
该代码使用Python爬取福建省的IP段数据,通过requests和lxml库获取网页内容并解析,提取省、市、区及IP段信息,保存到Pandas DataFrame中。接着根据IP段随机生成IP地址,并将结果写入Excel文件。
|
存储 消息中间件 前端开发
工厂人员定位管理系统架构设计:构建一个高效、可扩展的人员精确定位
本文将深入探讨工厂人员定位管理系统的架构设计,详细解析前端展示层、后端服务层、数据库设计、通信协议选择等关键环节,并探讨如何通过微服务架构实现系统的可扩展性和稳定性。
569 10
|
供应链 算法 调度
【双层模型】考虑供需双侧的综合能源双层优化模型
该程序构建了一个综合能源系统的优化调度双层模型,采用差分进化算法和规划算法分别求解上下层问题。模型涵盖了燃气轮机、锅炉、风电、光伏及储能设备的协同运行,并考虑了供应商与用户的利益平衡。通过满足设备出力、储能、负荷平衡等约束条件,实现了系统经济性和性能的优化。程序基于Matlab+Cplex编写,注释详尽且附带文档说明,便于学习研究。
|
XML JSON 分布式计算
如何设计财务对账系统 —— 从0到1搭建对账中心实战
卡拉云快速搭建企业内部对账系统
13765 3
如何设计财务对账系统 —— 从0到1搭建对账中心实战
|
存储
好看又规范的Github Readme 制作指南
本文是关于制作规范且外观吸引人的GitHub README文件的指南,包括了README的基本结构、美化技巧,以及如何使用Markdown格式、徽标和图片来增强文档的可读性和吸引力。
2159 0