2016-11-27 5 views
0

Я пытаюсь получить следующее:варианты Разбор от выбора

<select name="Detect" id="313" class="select" style="display: none;"> 
<option value="650" maxmad="15" maxpad="2" status="TRUE" context="24"> 5 </option> 

<option value="660" maxmad="16" maxpad="2" status="TRUE" context="25"> 6 </option> 

Я хочу, чтобы очистить и распечатать следующее, 650 от «стоимости», и 15 из «maxmad» и распечатать его как это (Существует много из этих вариантов, и я хочу, чтобы напечатать все из них):

650: 15 
660: 16 
670: 17 
etc 
etc 

Вот что я пробовал:

driver = webdriver.PhantomJS() 
window = driver.set_window_size(1120, 550) 
site = driver.get("www.website.com") 
soup = BeautifulSoup(site, "html.parser") 
for option in soup.find_all("option"): 
    print('id: {}, maxmad: {}'.format(option['id'], option.text)) 
+0

Где в выходной приходит из 314 , Есть только один 'id', и это 313 – Anthon

+0

Я добавил его просто, чтобы показать, что я хотел, но есть несколько вариантов, я просто вставил один из них, остальные выглядят одинаково, кроме разных идентификаторов и maxmads. – KingPey

+0

Есть ли несколько несколько вариантов, а также несколько выборок (которые дают вам идентификатор – Anthon

ответ

0

Несколько ошибок здесь, которые сложнее найти и попробовать, потому что вы загружаете страницу каждый раз. Сначала вы должны создать минимальный HTML-файл с соответствующим кодом, а затем использовать его для проверки кода синтаксического анализа.

Тогда первое, что вы заметите, используете site.find_all, где вы должны использовать soup.find_all. После фиксации, что вы обнаружите, что option не id, и что вы должны искать select, чтобы получить id:

from bs4 import BeautifulSoup 

html_str = """ 
<html> 
<body> 
<select name="Detect" id="313" class="select" style="display: none;"> 
<option value="650" maxmad="15" maxpad="2" status="TRUE" context="24"> 5 </option> 
<option value="660" maxmad="16" maxpad="2" status="TRUE" context="25"> 6 </option> 
</body> 
</html> 
""" 

soup = BeautifulSoup(html_str, "html.parser") 
select = soup.select("select")[0] 
for select in soup.select("select"): 
    ident = select['id'] 
    for option in select.find_all("option"): 
     print('value: {}, maxmad: {}'.format(option['value'], option['maxmad']) 

, который дает:

value: 650, maxmad: 15 
value: 660, maxmad: 16 
+0

Вместо html_str, как бы я использовал сайт там вместо? Есть несколько вариантов, я только что вставил один, так как бы я напечатать все из них? – KingPey

+0

, если 'driver.get (« www.website.com »)' дает вам html, то просто верните эти первые 3 строки на место и замените 'html_str' на' site'. – Anthon

+0

@KingPey Я обновляю ответ. Очень запутанно, что вы печатаете maxmad не со значением атрибута maxmad, а с соответствующим текстом. – Anthon

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