さて、プロセスを開始するためにbr.open()を使用するには、いくつかの開始URLが必要です。
aspnetForm型のコントロールがあり、以下のコードはそのままでは動作しませんが、始点のビットとして機能します(進行中の作業... :-)。 ヘッダーとパラメータは、ブラウザのdevツールの[ネットワーク]タブで確認する必要があります。
br.open("http://media.ethics.ga.gov/search/Lobbyist/Lobbyist_results.aspx?&Year=2016&LastName="+letter+"&FirstName=&City=&FilerID=")
soup = BS(br.response().read())
table = soup.find("table", { "id" : "ctl00_ContentPlaceHolder1_Results" }) # Need to add error check here...
if table is None: # No lobbyist with last name starting with 'X' :-)
continue
records = table.find_all('tr') # List of all results for this letter
for form in br.forms():
print "Form name:", form.name
print form
for row in records:
rec_print = ""
span = row.find_all('span', 'lblentry', 'value')
for sname in span:
if ',' in sname.get_text(): # They actually have a field named 'comma'!!
continue
rec_print = rec_print + sname.get_text() + "," # Create comma-delimited output
print(rec_print[:-1]) # Strip final comma
lnk = row.find('a', 'lblentrylink')
if lnk is None: # For some reason, first record is blank.
continue
print("Lnk: ", lnk)
newlnk = lnk['id']
print("NEWLNK: ", newlnk)
newstr = lnk['href']
newctl = newstr[+25:-5] # Matching placeholder (strip javascript....)
br.select_form('aspnetForm') # Tried (nr=0) also...
print("NEWCTL: ", newctl)
br[__EVENTTARGET] = newctl
response = br.submit(name=newlnk).read()
実際には、表示されている乱雑なテーブルを抽出するのではなく、csvを取得するためのダウンロードボタンがあります。私はwgetを調べます、ありがとう。 –
しかし、私は問題は直接URLがないということであり、そのコードは表示されているということです。 –
「リンクアドレスのコピー」を右クリックすることができません。そのURLはあなたが必要なすべてです。 –