美文网首页
用Python爬虫实时获取外汇牌价

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

作者: CoryLiu | 来源:发表于2018-03-28 19:54 被阅读1250次

    最近外汇波动又比较大了,
    我们公司是参考中国银行网站上公布的外汇牌价,由人工定期查看比对,来修改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 著,李斌 译,人民邮电出版社

    相关文章

      网友评论

          本文标题:用Python爬虫实时获取外汇牌价

          本文链接:https://www.haomeiwen.com/subject/femucftx.html