使用python实现抓取中国银行外汇牌价首页数据实现
作者:BoBo啵啵 发布时间:2021-11-28 02:05:49
标签:Python,外汇牌价,数据抓取
利用requests、BeautifulSoup、xlwings库抓取中国银行外汇牌价首页数据
1. 利用requests、BeautifulSoup、xlwings库抓取中国银行外汇牌价首页数据。
(1)中国银行外汇牌价网址如下。
https://www.bankofchina.com/sourcedb/whpj/
(2)调用requests模块中get方法访问上述网址,获取Response 对象。
url = "https://www.bankofchina.com/sourcedb/whpj/"
web=re.get(url)
(3)利用BeautifulSoup类解析。
#BeautifulSoup将字节流转换为utf-8编码
bs_obj=BeautifulSoup(web.text,'lxml')
(4)利用find_all方法查找table、tr、td等标签对象。
#查找数据所在表格
table=bs_obj.find_all('table')[1]
all_th=all_tr.find_all('th')
#print(all_th)
all_td=all_tr.find_all('td')
#print(all_td)
(5)将找到的相应标签内容依次添加到列表中。
if len(all_th)>0:
dataRow=[]
for item in all_th:
dataRow.append(item.text)
dataAll.extend([dataRow])
if len(all_td)>0:
dataRow=[]
for item in all_td:
dataRow.append(item.text)
dataAll.extend([dataRow])
(6)利用xlwings库,将列表内容写入Excel文件。
wb=xw.Book()
sht=wb.sheets('Sheet1')
sht.range('a1').value=dataAll#将数据添加到表格中
(7)利用这部分数据建立折线图。
chart=sht.charts.add(500,50,700,400)
chart.set_source_data(sht.range('A1:A28,C1:C28,E1:E28'))#设置数据画图
chart.chart_type='line_markers'
chart.name='line_markersd'
#chart.api[1].ChartTitle.Text='中国银行外汇牌价'
Code:
import requests as re
from bs4 import BeautifulSoup
import xlwings as xw
url = "https://www.bankofchina.com/sourcedb/whpj/"
web=re.get(url)
web.encoding=web.apparent_encoding
#BeautifulSoup将字节流转换为utf-8编码
bs_obj=BeautifulSoup(web.text,'lxml')
#查找数据所在表格
table=bs_obj.find_all('table')[1]
#print(table)
dataAll=[]
for all_tr in table.find_all('tr'):#找到所有tr,返回一个列表
all_th=all_tr.find_all('th')
#print(all_th)
all_td=all_tr.find_all('td')
#print(all_td)
if len(all_th)>0:
dataRow=[]
for item in all_th:
dataRow.append(item.text)
dataAll.extend([dataRow])
if len(all_td)>0:
dataRow=[]
for item in all_td:
dataRow.append(item.text)
dataAll.extend([dataRow])
wb=xw.Book()
sht=wb.sheets('Sheet1')
sht.range('a1').value=dataAll#将数据添加到表格中
chart=sht.charts.add(500,50,700,400)
chart.set_source_data(sht.range('A1:A28,C1:C28,E1:E28'))#设置数据画图
chart.chart_type='line_markers'
chart.name='line_markersd'
#chart.api[1].ChartTitle.Text='中国银行外汇牌价'
来源:https://blog.csdn.net/gezongbo/article/details/120986228?utm_medium=distribute.pc_feed.none-task-blog-personrec_tag-7.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-personrec_tag-7.nonecase


猜你喜欢
- 代码编辑环境Win10+(Pycharmm or Vscode)+PyQt 5.14.2功能实现静态作图:数据作图,取决于作图函数,可自行修
- 一、动机(Motivate)在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂
- 什么要学习PyTorch?有的人总是选择,选择的人最多的框架,来作为自己的初学框架,比如Tensorflow,但是大多论文的实现都是基于Py
- 直接贴代码啦:#coding=utf-8import pandas as pddef arff_to_csv(fpath): #
- 在使用python编程过程中,我们往往需要借助字典来提高编程效率。同时为了调试方便,我们希望将某些变量保存为中间文件。例如,在协同过滤算法中
- 本文实例讲述了python实现爬取百度图片的方法。分享给大家供大家参考,具体如下:import jsonimport itertoolsim
- 触发器权限和所有权CREATE TRIGGER 权限默认授予定义触发器的表所有者、sysadmin 固定服务器角色成员以及 db_owner
- 很久以前做的东西,发出来大家玩玩!<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
- 以Python 3.x版本为主一、比较运算符比较运算符主要是True和Fals两个值编号比较运算符说明1==等于2!=<>(Py
- 本文实例讲述了Python Socket实现简单TCP Server/client功能。分享给大家供大家参考,具体如下:网络上关于socke
- 一、原理概述v-for指令时在模板编译的代码生成阶段实现的,当遍历数组或对象时需要使用列表渲染指令v-for。当Vue.js用v-for正在
- 代码class Shuxing(): def __init__(self, size = 10): s
- 本来是想从网上找找有没有现成的爬取空气质量状况和天气情况的爬虫程序,结果找了一会儿感觉还是自己写一个吧。主要是爬取北京包括北京周边省会城市的
- 前言本文主要给大家分享了一些简单的Python练习题,对学习python的新手们来说是个不错的练习问题,下面话不多说了,来一起看看详细的介绍
- 在 ASP(VBScript 为语言)中,Asc 函数的返回值小于 0 的,可以被判断为中文字符。Asc 函数返回与字符串的第一个字母对应的
- 我的原数据库是3.23版本的.前几天因为一个论坛转移.必须用5.1的.于是就是升级了数据库.论坛是正常的.可以是原来的一个老库因为是3.23
- 1. dataloader() 初始化函数def __init__(self, dataset, batch_size=1, shuffle
- 在最开始的时候所有的斐波那契代码都是使用递归的方式来写的,递归有很多的缺点,执行效率低下,浪费资源,还有可能会造成栈溢出,而递归的程序的优点
- 1.使用render方法return render(request,'index.html') 返回的页面内容是index.
- 前言相信大家都知道任何版本控制系统的一个最有的用特性就是“撤销 (undo)”你的错误操作的能力。在 Git 里,“撤销” 蕴含了不少略有差