Форум сайта python.su
0
Столкнулся с
input name="random"
<div class="InputText"> <label for="idc"> <span>prosto text</span> <span id="idd" style="display:none"></span> </label> <span class="Text"> <input class="Text" type="text" value="" name="s1360107685" id="idc"/> </span> <div class="RequiredLabel"> </div> <span> </span> </div> </li> </ul> </fieldset> </div> </div> </div> </div> <div class="Foot"> <div class="Inner"> </div> </div> </div> </div> </li><li> <div id="ide"> <div class="Panel"> <div class="Head"> <div class="Inner"> </div> </div> <div class="Body"> <div class="Inner"> <div id="idf"> <div class="Data"> <h3>text</h3> <fieldset class="Personal"> <legend>text</legend> <ul class="Fields"> <li class="Required"> <div class="InputText"> <label for="id10"> <span>lala</span> <span class="Required" title="required" id="id11">*</span> </label> <span class="Text"> <input class="Text ColouredFocus" type="text" value="" name="s1976782039" id="id10" maxlength="30" onchange="var wcall=wicketAjaxPost(';jsessionid=A2A6CA928DD9E443A3C06ADCFB299B83.jport-us015?wicket:interface=:0:FormRegistration:ListRegistrationData:1:ItemRegistrationData:BorderBoxRegistrationData:PanelRegistrationData:Row1:Field::IBehaviorListener:1:', wicketSerialize(Wicket.$('id10')),function() { }.bind(this),function() { }.bind(this), function() {return Wicket.$('id10') != null;}.bind(this));"/> </span> <div class="Label"> </div> <span> </span> </div> </li> <li class="lastname"> <div class="InputText"> <label for="id12"> <span>Nume</span> <span class="Required" title="required" id="id13">*</span> </label> <span class="Text"> <input class="Text ColouredFocus" type="text" value="" name="s1047864084" id="id12" maxlength="30" onchange="var wcall=wicketAjaxPost(';jsessionid=A2A6CA928DD9E443A3C06ADCFB299B83.jport-us015?wicket:interface=:0:FormRegistration:ListRegistrationData:1:ItemRegistrationData:BorderBoxRegistrationData:PanelRegistrationData:Row2:Field::IBehaviorListener:1:', wicketSerialize(Wicket.$('id12')),function() { }.bind(this),function() { }.bind(this), function() {return Wicket.$('id12') != null;}.bind(this));"/> </span> <div class="Label"> </div> <span> </span> </div> </li>
<form class="reg-form" action=";jsessionid=A2A6CA928DD9E443A3C06ADCFB299B83.jport-us015?wicket:interface=:0:FormRegistration::IFormSubmitListener::" method="post" id="id000"><div style="width:0px;height:0px;position:absolute;left:-100px;top:-100px;overflow:hidden"><input type="hidden" name="id000_hf_0" id="id000_hf_0" /></div> <div id="id9"></div> <div class="reg-headline-container"> <h2 class="reg-headline"> <span>perved</span><br> <span>python</span> </h2> </div>
Офлайн
Вот такой метод есть, возможно, вам поможет: https://github.com/lorien/grab/blob/master/grab/ext/form.py#L153
Другое решение, которое будет всегда работать, составить самостоятельно (путём анализа DOM-дерева) POST-данные и отправить их.
Офлайн
0
lxml как вариат ?
from lxml import etree html = etree.HTML(content_html) action_field = html.xpath('//form[@id="id000"][@class="reg-form"]')[0].attrib['action'] name_field = html.xpath('//form[@id="idc"]')[0].attrib['name']
Отредактировано kold (Июль 25, 2014 16:47:24)
Офлайн