2015-07-04 78 views
0

我試圖從HTML的網頁中提取的事件 - http://www.staffordshire-pcc.gov.uk/space/如何訪問/設置「選擇」標記HTML中使用Python

我想用Python來選擇不同的領域,但與下面的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> 

我用機械化找到網頁上的表格,但因爲沒有連接到標籤的形式,我不能工作了我會怎麼選擇它,然後提交一個值。

我追求的最佳選擇是什麼?

回答

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