2015-07-04 3 views
0

Я пытаюсь извлечь события из страницы HTML - http://www.staffordshire-pcc.gov.uk/space/Как получить доступ/набор «выберите» тег в HTML с питоном

Я хочу, чтобы выбрать различные области с помощью питона, но отклеивались со следующим HTML:

<select data-ng-options="key as value.name for (key,value) in areaGroups | orderBy:'name'" data-ng-model="selectedAreaGroup" data-ng-change="updateAreaGroup()" class="ng-pristine ng-valid ng-touched"> 
    <option value="" class="" selected="selected">Choose an area</option> 
    <option value="string:CannockChase" label="Cannock Chase District">Cannock Chase District</option> 
    <option value="string:EastStaffordshire" label="East Staffordshire">East Staffordshire</option> 
    <option value="string:Lichfield" label="Lichfield District">Lichfield District</option> 
    <option value="string:Newcastle" label="Newcastle Borough">Newcastle Borough</option> 
    <option value="string:SouthStaffordshire" label="South Staffordshire">South Staffordshire</option> 
    <option value="string:Stafford" label="Stafford Borough">Stafford Borough</option> 
    <option value="string:StaffordshireMoorlands" label="Staffordshire Moorlands">Staffordshire Moorlands</option> 
    <option value="string:SoTCentral" label="Stoke-on-Trent Central">Stoke-on-Trent Central</option> 
    <option value="string:SoTNorth" label="Stoke-on-Trent North">Stoke-on-Trent North</option> 
    <option value="string:SoTSouth" label="Stoke-on-Trent South">Stoke-on-Trent South</option> 
    <option value="string:Tamworth" label="Tamworth Borough">Tamworth Borough</option> 

Я использую Mechanize найти формы на страницах, но нет формы прилагается к тегу, я не могу работать, как я бы выбрал его, а затем представить значение.

Что для меня лучше всего подходит?

ответ

2

Вы можете выбрать форму по порядку, при котором она появляется на странице, во-первых, импортировать & открытый

import mechanize 
br = mechanize.Browser() 
br.open('http://www.staffordshire-pcc.gov.uk/space/') 

Петля через все формы на странице

forms = [f.name for f in br.forms()] 

Позволяет проверить, является ли форма [0] - правильный индекс для формы с выпадающим списком (как в вашем вопросе). Установите контрольную переменную и распечатайте значения

control = forms[0].controls[0] 
form_values = [item.attrs['value'] for item in control.items] 
print form_values 

Если этого правильную форму вы должны увидеть:

["string:CannockChase", "string:EastSta.... 

Если не перебирать индексы, пока не найдете правильный индекс (* см. Ниже)

Наконец, как только вы нашли правильную форму вы можете установить значение и представить:

br.form[0*] = form_values[0] 
r = br.submit() 
// read out the HTML from the resulting page 
print r.read() 

* этот показатель в зависимости от того представляет собой форму раскрывающийся, как в вашем вопросе

+1

я был на полпути, но не удалось выработать бит item.attrs ['value']. Спасибо за ваше время. – elksie5000

Смежные вопросы