2017-01-05 6 views
0

Прошу прощения за то, что вы не можете конкретно указать URL-адрес, с которым вы работаете. Я пытаюсь извлечь некоторые данные с определенного сайта, но он недостаточно организован. Тем не менее, они имеют «Экспорт в CSV файл» и код для этого блока ...Извлечение CSV из кнопки экспорта

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

В этом типе ситуации, Что лучший способ идти о захвате, что данные, когда нет конкретных url для CSV, я использую Mechanize и BS4.

ответ

0

Если вы можете нажать кнопку, которая может загружать данные в виде csv, это звучит так, как если бы вы могли получить wget link данные и сохранить их на своем компьютере и работать с ним там. Я не уверен, что вот что вы здесь делаете, более подробную информацию вы можете предложить?

+0

Я. Вот на самом деле, что это такое, есть кнопка загрузки для CSV и им пытаются получить CSV в Python, а не извлечения беспорядочные Thats таблицы отображаются. Я загляну в wget, спасибо. –

+0

, но я должен указать, что проблема заключается в том, что нет прямого URL-адреса, только тот код, который я отображал. –

+0

Вы не можете щелкнуть правой кнопкой мыши и «Копировать адрес ссылки»? Этот URL-адрес - это все, что вам нужно. –

0

Вы должны попробовать Selenium, Selenium - это набор инструментов для автоматизации веб-браузеров на многих платформах. Он может многое сделать, включая кнопку щелчка.

0

Ну, вам нужно НЕИСПОЛЬЗОВАТЬ стартовый URL для подачи br.open(), чтобы начать процесс.

Похоже, что у вас есть тип управления типа aspnetForm, а приведенный ниже код МОЖЕТ служить в качестве отправной точки, хотя он не работает как есть (это незавершенная работа ... :-). Вам нужно будет посмотреть заголовки и параметры через вкладку «Сеть» своих инструментов браузера, чтобы увидеть их.

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() 
Смежные вопросы