2017-04-09 1 views
2

Ich bin neu bei Python und habe Probleme mit dem Herunterladen einer TXT-Datei von der FederalReserve-Website mit einer Liste von Routing-Nummern (ACH) und deren entsprechenden Finanzinstitut Namen.Python - Federal Reserve Routing-Nummern herunterladen

Der größte Nachteil ist, dass ich auf einen "Akzeptieren" -Button klicken muss, bevor ich die Seite mit den erforderlichen .txt-Daten erreiche. Sowohl die Links zur Schaltfläche "Vereinbarung" als auch die Seite mit den TXT-Daten befinden sich in meinem Code. Ich konnte nicht beide Links auflisten, da ich auf dieser Seite zu neu bin.

Kann mir bitte jemand helfen?

ich mehrere Ansätze einschließlich Selen, schöne Seife, TamperData in Firefox habe versucht zu verstehen, was wieder zu schreiben, usw.

Hier ist, was ich denke, sollte die einfachste Weg sein, auf Grund meiner Grundkenntnisse, aber umfangreiche Versuch und Irrtum Versuche:

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

gelesen werden kann ich herunterladen CSV und TXT-Dateien von anderen Websites ohne Probleme zu einer bestimmten Stelle auf einem Festplatte ... mein Hauptproblem hier ist, dass ich die Seite nicht an Akzeptieren (klicken Sie auf die Schaltfläche Akzeptieren) übergeben kann, bevor Sie mit dem Herunterladen der TXT-Daten fortfahren. – AstroBernal

Antwort

1

machte ich ein paar Versuche requests und requests.Session() ohne Glück verwenden, vereinfachte Dinge dann zu PostMan bewegen und konnte immer noch nicht durchkommen verwalten.

Ich wechselte dann Ansatz, und die Mechanize Bibliothek kam zur Rettung.

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 Federal Reserve Bank of Boston MABOSTON Y Y20040910

...

.


Es ist meistens geradlinig Code, aber diese Linie ist derjenige, der zählt:

rs = br.submit(name="agreementValue", nr=0) 

Das Formular Tasten hat zwei, eins Zustimmen und andere Nicht Zustimmen aber sie beide haben den gleichen Namen name="agreementValue". Der Parameter nr=0 wählt die erste Übereinstimmung aus und reicht diese ein.

Einmal machte die Einreichung automatisch die Gegenstelle die gewünschte Textdatei geladen und kann von der Reaktion rs.get_data()

Verwandte Themen