Уведомления

Группа в Telegram: @pythonsu

#1 Июль 23, 2014 22:26:09

gelius
Зарегистрирован: 2013-03-18
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

grab + заполнение форм по порядку

Столкнулся с

input name="random"
. Т.е. значение name всегда разное. Но поля формы идут по порядку. Нужно заполнить их исходя из очередности. Реально?
Вот так выглядит это безобразие:
      <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">
	            	   &nbsp;
	            	</div>
	            </div>
            </div>
    	</div>
							
						</li><li>
							
								<div id="ide">
      		<div class="Panel">
	    		<div class="Head">
	            	<div class="Inner">
	            	   &nbsp;
	            	</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>

Офлайн

#2 Июль 25, 2014 13:28:23

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

grab + заполнение форм по порядку

Вот такой метод есть, возможно, вам поможет: https://github.com/lorien/grab/blob/master/grab/ext/form.py#L153
Другое решение, которое будет всегда работать, составить самостоятельно (путём анализа DOM-дерева) POST-данные и отправить их.

Офлайн

#3 Июль 25, 2014 16:28:42

kold
Зарегистрирован: 2014-07-25
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

grab + заполнение форм по порядку

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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version