爬取2018年8月27日~9月2日的欧元汇率。
先说结论:
如果是现汇卖出价,可以选择
2018-08-31 09:19:26 ,现钞卖出价 805.28。
我刚问了报销过的人她说任选都行,可以不是中行折算价。
最近出差,学校可以以人民币的形式报销路费、住宿费,汇率,可以任选出差期间的任何一天任何时候的中国银行的汇率,中国银行网站上的汇率长这样:
如果想要合理利用规则,多回一点本,不妨选择汇率最坑的一天(默默给财务处大佬作揖,别搞我,我为北邮体育馆平均每周至少贡献20元)
50多页汇率都让我用小本本记上吗?
50多页汇率都让我用小本本记上吗?
比较笨的方法
在页面中必须要选择这个东西,我去,日期怎么点?
selenium模拟点击,但是这也太笨重了,都犯不上,万一是js对象,还不知道能不能获取过来。
还算可以的方法
这里面要稍微琢磨一下的一点,是如果你仅仅输入了网址的内容,返回的是这个空空的页面“对不起,检索词不能为空”,这时候应该怎么办?
回到最初的网页,打开控制台,选中network,刷新页面看一下,果然是你,表单就在这里:
那么我直接在post请求里面加上headers和表单就可以了。
import requests
url = 'http://srh.bankofchina.com/search/whpj/search.jsp'
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Content-Length': '58',
'Content-Type': 'application/x-www-form-urlencoded',
'Cookie': 'JSESSIONID=0000eiLWbmpU1jmVd-YyiUf_XDM:-1',
'Host': 'srh.bankofchina.com',
'Origin': 'http://srh.bankofchina.com',
'Referer': 'http://srh.bankofchina.com/search/whpj/search.jsp',
'Upgrade-Insecure-Requests': '1',
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
}
form_data = {
'erectDate': '2018-08-26', #起始日期
'nothing': '2018-09-02', #截止日期
'pjname': '1326', #1326是欧元的代码
'page': '1' #打开第一页
}
wb_data = requests.post(url,headers = headers,data=form_data)
print(wb_data.text)
爬取结果:
中国银行外汇牌价body{
background:#FFF;
font: 12px/26px Verdana,Geneva,sans-serif,"宋体";
color: rgb(83, 83, 83);
margin:0 auto;
text-align:center;
}
.wrapper{text-align:left;}
.invest_t table td,.publish table th ,.publish table tr{
font-size:12px;
}
.invest_t table tr td select{
height:30px;
}
.invest_t table tr th select{
height:auto;</