#python #forms #mechanize
#python #формы #механизировать
Вопрос:
Я использую mechanize
модуль для извлечения информации с веб-страницы. В нем есть раздел радиоуправления, который я выбираю перед переходом на следующую страницу. Я мог бы легко выбрать значение, присвоив ему значение. Но не удалось получить значение переключателя-кандидата. RadioSelect
часть моей формы выглядит следующим образом:
<RadioControl(rdoSelect=[1634,ABX EXPRESS, 16650,XYZ EXP])>
Я мог бы легко установить значения с помощью:
br.form['txtSource']='1634,ABX EXPRESS'
Что я хочу, так это удалить список :
[1634,ABX EXPRESS, 16650,XYZ EXP]
Обновить:
Когда я дал
print br.form['rdoSelect']
В результате выдается []
Я мог бы получить значение, используя
print br.form.possible_items("rdoSelect")
Но это дает мне это
/usr/lib/python2.5/site-packages/ClientForm.py:2984: DeprecationWarning: [item.name for item in self.items]
return c.possible_items(by_label)
Ответ №1:
Вместо:
print br.form.possible_items("rdoSelect")
mechanize говорит использовать:
options = [item.name for item in form.find_control('rdoSelect').items]
Пример использования:
#!/usr/bin/python
import re
import mechanize
br = mechanize.Browser()
r = br.open("http://www.htmlcodetutorial.com/forms/_INPUT_TYPE_RADIO.html")
form = mechanize.ParseResponse(r, backwards_compat=False)[2]
options = [item.name for item in form.find_control('pizzasize').items]
print options
Выдает:
['S', 'M', 'L']
Ответ №2:
Во-первых, предупреждение об устаревании не является ошибкой. Обычно это означает, что библиотека или код, который вы запускаете, были написаны для более ранней версии Python.
Я не уверен, как txtSource относится к rdoSelect (кажется, вы ожидаете, что они будут содержать одно и то же значение?). Однако переключатель обычно имеет символическое значение, а не отображаемый текст. Можете ли вы предоставить образец HTML-кода?