最近外汇波动又比较大了,
我们公司是参考中国银行网站上公布的外汇牌价,由人工定期查看比对,来修改ERP数据,实在是有点累。
于是用Python写了个爬虫程序,自动获取外汇牌价。
程序很短,但是花了半天时间调试。
汇率查询网站:http://srh.bankofchina.com/search/whpj/search.jsp
使用chrome浏览器打开。
先研究如何爬取网页
进入到初始查询页面后,选择美元,先不点查询按钮。

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

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')
数据取到了,接下来我们研究如何来提取所需数据。
网页数据结构
我们需要的数据每天最新的外汇卖出价,在下面的第一行,第四列。

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

完整代码
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 著,李斌 译,人民邮电出版社
网友评论