Веб-скребок Python для динамического заполнения выпадающего списка (с использованием mechanize и beautifulsoup(

я новичок в питоне. Я использую python 2.7 и пытаюсь очистить веб-сайт и собрать данные. У меня проблема с выбором раскрывающегося списка и получением новой формы ответа с обновленным списком элементов.

Это шаги:

  1. Я открываю сайт xyz.com
  2. Его пользовательский интерфейс выглядит так, как показано на прикрепленной ссылке на изображение.
  3. В начальной форме, которую мы открываем, отображается 5 выпадающих меню. К ним относятся: Штат
    Район Подрайон Деревня Годовой цикл

И изначально заполняются только цикл State и Year. А остальные выпадающие меню зависят друг от друга в последовательном порядке. Например: когда выбрано состояние --> оно заполняет район динамическим образом. И когда выбран район --> он заполняет подрайон, и аналогичным образом деревня заполняется выбором подрайона. И это динамическое обновление происходит из-за javascript.

Пока что могу дойти до стадии сбора списка состояний (Б/у красивые супы и механизации). И изначально я просто выбираю одно состояние и отправляю форму как:

def select_form(form):
   return form.attrs.get('action', None) == '/PublicReports/NutrientStatusFarmerWise'


br = mechanize.Browser()
br.open(url)
br.response()
br.select_form(predicate=select_form)
br.form.set_all_readonly(False)
br.form['State_Code'] = ['29']  
response = br.submit()
print response.read()

И когда я печатаю response.read, я не вижу новых названий районов. Я не знаю, чего здесь не хватает. Аналогичным образом мне нужно собрать названия районов, чтобы заполнить подрайоны и т. д. с остальными элементами.

Любые подсказки и подсказки будут очень полезны

PS: я прочитал старый пост и использовал его в качестве ссылки:
Web Парсер для динамических форм на питоне

форма с раскрывающимся списком

Благодарю вас !


person sandalwood    schedule 06.12.2017    source источник
comment
У меня такое ощущение, что вам нужно будет использовать selenium   -  person MattR    schedule 06.12.2017
comment
Я не хочу использовать селен.. это не для целей тестирования   -  person sandalwood    schedule 06.12.2017
comment
Что вы имеете в виду, что это не для целей тестирования?   -  person MattR    schedule 06.12.2017
comment
Я имею в виду, что для этого веб-скрейпинга я просто хочу использовать утилиты командной строки, а не какие-либо инструменты тестирования, такие как селен.   -  person sandalwood    schedule 06.12.2017
comment
Selenium можно использовать для выбора раскрывающихся списков, а затем для получения необходимых данных. Веб-скрейпинг, особенно на сайтах, которые находятся на веб-скрейперах и намеренно усложняют его, может быть не таким простым, как несколько строк кода.   -  person MattR    schedule 06.12.2017