2016-09-12 3 views
0

Ich versuche, einige Daten zu kratzen, beschlossen, Mechanisierung in Verbindung mit beautifulsoup zu verwenden. Ich muss das Feld eingeben, das ich in einem Formular auf dieser Webseite suchen möchte, und dann auf die Suchschaltfläche klicken, um zur nächsten relevanten Seite zu gelangen, deren URL ich Daten abkratzen möchte.Wie schicke ich ein Formular, um die URL der nächsten Webseite mit mechanize zu erhalten?

Der Entwicklermodus den folgenden Code für die form-

<form name="topsearch" id="topsearch" method="get" onsubmit="javascript:return search_post();" action=""> 
     <input type="hidden" name="search_data" id="search_data" value=""> 
      <input type="hidden" name="cid" id="cid" value=""> 
      <input type="hidden" name="mbsearch_str" id="mbsearch_str"> 
      <input type="hidden" name="topsearch_type" id="topsearch_type" value="1"> 
      <input name="search_str" id="search_str" autocomplete="off" onkeyup="getAutosuggesion();" type="text" value="Search Quotes, News, NAVs..." onblur="if(this.value=='')this.value='Search Quotes, News, NAVs...';" onfocus="if(this.value=='Search Quotes, News, NAVs...')this.value='';if(this.value=='Search Quotes, News, NAVs...')this.value='';" class="txtsrchbox">  
      <div id="autosugg_mc" class="sugbx"></div> 
      <div class="PR srch_qote"> 
       <div class="srchdrp" id="srchR">Quotes</div> 
       <div id="srch" class="qubx"> 
        <ul class="qlist"> 
         <li><a onclick="tab_topser('1');getAutosuggesion();" id="tab1" href="javascript:void(0)" class="">Quotes</a></li> 
         <li><a onclick="tab_topser('2');getAutosuggesion();" id="tab2" href="javascript:void(0)" class="">NAVs</a></li> 
         <li><a onclick="tab_topser('5');" id="tab5" href="javascript:void(0)" class="">Commodities</a></li> 
         <li><a onclick="tab_topser('9');" id="tab9" href="javascript:void(0)" class="active">Futures</a></li> 
         <li><a onclick="tab_topser('3');getAutosuggesion();" id="tab3" href="javascript:void(0)" class="">News</a></li> 
         <li><a onclick="tab_topser('4');" id="tab4" href="javascript:void(0)" class="">Messages</a></li>          
         <li><a onclick="tab_topser('6');getAutosuggesion();" id="tab6" href="javascript:void(0)" class="">Notices</a></li> 
         <li><a onclick="tab_topser('7');" id="tab7" href="javascript:void(0)" class="">Videos</a></li> 
         <li><a class="" onclick="tab_topser('8');" id="tab8" href="javascript:void(0)">All</a></li> 
        </ul> 
       </div>     
      </div> 
      <a href="javascript:;" onclick="$('#topsearch').submit()" style="float:left;" class="btn_search"></a>  
      <div class="CL"></div> 
      </form> 

ich füllen Sie das Formular mit meinen relevanten Suchbegriff using-

import pandas as pd 
import urllib2 
import BeautifulSoup as bs 
import mechanize 

baseURL = "someBaseURL" 
br = mechanize.Browser() 
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) 


#Open the Website 
r = br.open(baseURL) 

#Selecting the first form of the page 
br.select_form(nr=0) 
print br.geturl() 

br.form['search_str'] = "Some Search" 
br.submit() 

print br.geturl() 

Nach Absenden des Formulars zeigt, tut die URL nicht Ändere die URL, zu der es geht, wenn ich die gleiche Zeichenfolge auf der Website manuell suche.

Ich erhalte die URL nach der Einreichung als -

'baseURL?search_data=&cid=&mbsearch_str=&topsearch_type=1&search_str=Kiri+Industries' 

während, wenn ich manuell lege ich auf die nächste Seite mit der URL erhalten -

'baseURL/stockpricequote/dyes-pigments/kiriindustries/KDC01' 

Dies ist die URL Ich muss sein fähig, die Daten zu kratzen.

Ist der Submit-Button mit Javascript, das nicht mit mechanize aufgerufen werden kann, wenn das das Problem ist, wie kann ich es zum Arbeiten machen?

Jede Hilfe ist willkommen, danke.

Antwort

0

Es scheint, zumindest von meinem ähnlichen Problem, dass Mechanisieren überhaupt nicht Javascript behandelt. Versuchen Sie es mit Selen behandelt es gut Javascript. Ich baue mein Skript auf diesem Ich werde aktualisieren, wenn es mein Problem löst.

Verwandte Themen