用Python爬虫实时获取外汇牌价

最近外汇波动又比较大了,
我们公司是参考中国银行网站上公布的外汇牌价,由人工定期查看比对,来修改ERP数据,实在是有点累。

于是用Python写了个爬虫程序,自动获取外汇牌价。
程序很短,但是花了半天时间调试。

汇率查询网站:http://srh.bankofchina.com/search/whpj/search.jsp
使用chrome浏览器打开。

先研究如何爬取网页

进入到初始查询页面后,选择美元,先不点查询按钮。


用Python爬虫实时获取外汇牌价_第1张图片
初始查询页面

点右键,选择【检查】,出现调试页面后,再点击查询,在调试窗口,选择network,再点击Name框中search.jsp,右边明细数据窗口拉到最下面,显示如下:

用Python爬虫实时获取外汇牌价_第2张图片
调试窗口内容

Form Data就是我们需要的POST提交数据。

爬取网页代码

from bs4 import BeautifulSoup
from urllib import request
from urllib import parse

url = "http://srh.bankofchina.com/search/whpj/search.jsp"
Form_Data = {}
Form_Data['erectDate'] = ''
Form_Data['nothing'] = ''
Form_Data['pjname'] = '1316'
data = parse.urlencode(Form_Data).encode('utf-8')
html = request.urlopen(url,data).read()
soup = BeautifulSoup(html,'html.parser')

数据取到了,接下来我们研究如何来提取所需数据。

网页数据结构

我们需要的数据每天最新的外汇卖出价,在下面的第一行,第四列。

用Python爬虫实时获取外汇牌价_第3张图片
数据页面

同样,我们点开网页调试页面,在element分页中,一层层找到我们所需要的数据。

用Python爬虫实时获取外汇牌价_第4张图片
网页数据结构

完整代码

from bs4 import BeautifulSoup
from urllib import request
from urllib import parse
# 爬取网页
url = "http://srh.bankofchina.com/search/whpj/search.jsp"
Form_Data = {}
Form_Data['erectDate'] = ''
Form_Data['nothing'] = ''
Form_Data['pjname'] = '1316'
data = parse.urlencode(Form_Data).encode('utf-8')
html = request.urlopen(url,data).read()
soup = BeautifulSoup(html,'html.parser')
# 解析数据
div = soup.find('div', attrs = {'class':'BOC_main publish'})
table = div.find('table')
tr = table.find_all('tr')
td = tr[1].find_all('td')
print(td[0].get_text(),td[7].get_text(),td[3].get_text())

数据获取到了!

程序运行输出的结果如下,以后再与数据库连接,即可实现自动更新ERP数据了。

美元 2018.03.28 18:59:32 630.88

参考文档:《用Python写网络爬虫》[澳] Richard Lawson 著,李斌 译,人民邮电出版社

你可能感兴趣的:(用Python爬虫实时获取外汇牌价)