抓取人民币汇率—数据来源(中国银行网站)

文章导语

今年暑假系里给每个同学布置了一篇学年论文,就想着怎么也得弄点数据撑撑排面吧,一开始我是不想爬的,然后就在网上各种找接口,找了半天,不是不能用就是获取的数据只是实时的,无法获得历史数据,哎,既然没办法,就只能爬了,顺便就在一个群里问了一下端口的事,然后开始准备工作,等网页分析完了,开始敲代码的时候,又看了一下手机,有个道友说tushare里面有接口,虽然tushare用了也挺多次吧,但是没发现有汇率的接口啊,我又抱着希望去看了看,果不其然,还真有。但是回头一想,网页都分析完了,干脆写完得了。二话不说,写吧!

实现过程
#! /usr/bin/env/ python
# -*- coding:UTF-8 -*-
# Author: Zhu Huaren

import requests
from lxml import etree
import time
import xlrd
from xlutils.copy import copy

proxy = {
    'HTTP': 'HTTP://180.125.70.78:9999',
    'HTTP': 'HTTP://117.90.4.230:9999',
    'HTTP': 'HTTP://111.77.196.229:9999',
    'HTTP': 'HTTP://111.177.183.57:9999',
    'HTTP': 'HTTP://123.55.98.146:9999',
        }
row = 0
for n in range(1,50):  #  抓取页码范围
    form_data = {
        'erectDate': '2009-07-01',
        'nothing': '2019-07-08',
        'pjname': '1316',  # 美元兑人民币代码,修改此代码可获得其他货币兑人民币汇率
        'page': n,
    }
    url = 'http://srh.bankofchina.com/search/whpj/search.jsp'
    res = requests.post(url=url, data=form_data,proxies=proxy)
    html = etree.HTML(res.text)

    for j in range(2, 22):
        m_n = html.xpath('//tr[{}]/td[1]/text()'.format(j))
        s_e_p = html.xpath('//tr[{}]/td[2]/text()'.format(j))
        c_p = html.xpath('//tr[{}]/td[3]/text()'.format(j))
        s_e_sp = html.xpath('//tr[{}]/td[4]/text()'.format(j))
        c_s = html.xpath('//tr[{}]/td[5]/text()'.format(j))
        bank_count_p = html.xpath('//tr[{}]/td[6]/text()'.format(j))
        date = html.xpath('//tr[{}]/td[7]/text()'.format(j))
        row = row + 1
        workbook = xlrd.open_workbook('money.xls')  # 创建工作表
        workbook_copy = copy(workbook)  # 向工作表内追加内容
        worksheet = workbook_copy.get_sheet(0)
        worksheet.write(0, 0, '货币名称')
        worksheet.write(0, 1, '现汇买入价')
        worksheet.write(0, 2, '现钞买入价')
        worksheet.write(0, 3, '现汇卖出价')
        worksheet.write(0, 4, '现钞卖出价')
        worksheet.write(0, 5, '中行折算价')
        worksheet.write(0, 6, '发布时间')
        worksheet.write(row, 0, ''.join(m_n))  # 将列表格式转换为字符串
        worksheet.write(row, 1, ''.join(s_e_p))
        worksheet.write(row, 2, ''.join(c_p))
        worksheet.write(row, 3, ''.join(s_e_sp))
        worksheet.write(row, 4, ''.join(c_s))
        worksheet.write(row, 5, ''.join(bank_count_p))
        worksheet.write(row, 6, ''.join(date))
        workbook_copy.save('money.xls')
    print('第{}页爬取完成...'.format(n))
time.sleep(1)

获取数据的界面
在这里插入图片描述

获取的数据,我就先爬了1000多条,等用的时候再爬吧。
在这里插入图片描述

文章结语

最后我再说说我踩的坑吧,第一个就是在网页开发工具上复制的xpath路径竟然不能直接用,比如说这个把,复制xpath路径的时候,它会自动优化,把一些网页源码没有的节点自动补齐,当你用这个路径提取内容的时候肯定提取不出来。还有一个就是追加写入Excel,这个就不多说了吧。
总结下来一句话:
只有当你踩的坑多了,你才有机会踩下一个坑,否则你连下一个坑都见不到。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值