我是Python新手,我正在努力从FederalReserve网站下载.txt文件,其中包含路由号码列表(ACH)及其相应的金融机构名称。
最大的警告是我必须点击"接受"在到达包含所需的.txt数据的页面之前的按钮。 “协议”按钮和包含.txt数据的页面都链接在我的代码中。我无法列出这两个链接,因为我在这个网站上太新了。
有人可以帮助我吗?
我尝试了多种方法,包括硒,漂亮的肥皂,Firefox中的TamperData,以了解要回发的内容等。
根据我的基本知识,这是我认为应该是最简单的路线,但广泛的尝试和错误尝试:
import webbrowser
import requests
url = 'https://www.frbservices.org/EPaymentsDirectory/agreement.html'
payload = {'agreementValue':'Agree'}
response = requests.get(url, data=payload)
webbrowser.open("https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt")
答案 0 :(得分:1)
我使用requests
和requests.Session()
做了一些尝试但没有运气,然后转移到PostMan并且仍然无法通过来简化事情。
然后我转换了方法,Mechanize库来救援。
import mechanize
br = mechanize.Browser()
br.open( 'https://www.frbservices.org/EPaymentsDirectory/fpddir.txt' )
br.select_form( name="acceptedForm" )
rs = br.submit( name="agreementValue", nr=0 )
print( rs.get_data() )
011000015FRB-BOS BOSTON MABOSTON联邦储备银行Y20040910
...
它主要是直接的代码,但这一行很重要:
rs = br.submit( name="agreementValue", nr=0 )
表单有两个提交按钮,一个同意,另一个不同意,但它们都具有相同的名称name="agreementValue"
。 nr=0
参数选择第一个匹配并提交该匹配。
提交后,远程站点会自动加载所需的文本文件,并且可以从响应rs.get_data()