2017-01-05 40 views
0

URLを扱うことが特にできないため、お詫び申し上げます。私は特定のサイトからデータを抽出しようとしていますが、十分に整理されていません。しかし、彼らは、「CSVファイルへのエクスポート」およびそのブロックのコードが...このような状況でエクスポートボタンからCSVを抽出する

<input type="submit" name="ctl00$ContentPlaceHolder1$ExportValueCSVButton" value="Export to Value CSV" id="ContentPlaceHolder1_ExportValueCSVButton" class="smallbutton"> 

できない、いただきました!特段がない場合、そのデータをつかんで行くための最善の方法CSVへのURL、MechanizeとBS4を使用しているIm。

答えて

0

データをcsvとしてダウンロードできるボタンをクリックすると、そのデータをwget linkに保存しておき、そのデータをマシンに保存してそこで作業できるように思えます。私はそれがあなたがここにいるのかどうかは分からないが、あなたが提供できる詳細は何か?

+0

実際には、表示されている乱雑なテーブルを抽出するのではなく、csvを取得するためのダウンロードボタンがあります。私はwgetを調べます、ありがとう。 –

+0

しかし、私は問題は直接URLがないということであり、そのコードは表示されているということです。 –

+0

「リンクアドレスのコピー」を右クリックすることができません。そのURLはあなたが必要なすべてです。 –

0

Seleniumを試してみてください。Seleniumは、多くのプラットフォームでWebブラウザを自動化するためのツール群です。クリックボタンを含む多くのことができます。

0

さて、プロセスを開始するために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() 
関連する問題