Проблема выбора управления с помощью Python Mechanize - PullRequest
0 голосов
/ 15 января 2020

В настоящее время у меня есть код для итеративного просмотра веб-страниц сайта . У меня есть список из 371 объекта поиска (называемого spaceGroup), который go в поле поиска Параметры ячейки и симметрия . Для каждого поиска я выбираю результат. В большинстве случаев результаты поиска возвращают список результатов, где мне необходимо указать, какой результат выбрать из этого списка. Это показано ниже:

import mechanize


for group in spaceGroup:   

    # initialize/open main page for search
    br = mechanize.Browser() 
    br.open("http://rruff.geo.arizona.edu/AMS/")

    # select and write space group to cellparam control in br form
    br.select_form(nr=0)
    br.set_all_readonly(False)
    br["CellParam"] = "sg="+group

    # submit/search, brings to next page
    response0 = br.submit()
    name = "sg"+str(count)

    # select form 
    br.select_form(nr=0)
    br.set_all_readonly(False)

    # here I select from a list of results and 
    br.find_control("check[]").items[seed].selected=True 
    br.find_control("down").items[file].selected=True # this form chooses the file
    response1 = br.submit()

Из выбранного результата загружается файл. Время от времени, однако, будет только один результат от моего поиска. В этих случаях я комментирую br.find_control("check[]").items[seed].selected=True и пытаюсь просто загрузить единственный результат без какого-либо успеха. Вот как выглядит форма для одного результата:

<result_form POST http://rruff.geo.arizona.edu/AMS/download.php?page=amcsd application/x-www-form-urlencoded
  <HiddenControl(viewOrDownload=)>
  <HiddenControl(hid1=1)>
  <HiddenControl(processed=0)>
  <SelectControl(down=[*amc, cif, dif])>
  <IgnoreControl(<None>=<None>)>
  <IgnoreControl(<None>=<None>)>
  <SubmitControl(viewSelected=View Selected Data)>
  <SubmitControl(downloadSelected=Download as Text File)>
  <SubmitControl(downloadSelectedZip=Download as Zip Archive)>>

Я пытался это исправить, установив br['viewOrDownload']=Download перед отправкой, но это не работает. Есть другие идеи?

...