2017-05-25 3 views
0

Ich versuche etwas neues für das Verwerfen von Web. Ich versuche mich auf einer Website anzumelden und dann bestimmte Elemente zu scrappen.Python Scrapy: Login zu einer Website dann kratzen

Ich habe diesen Code für diesen Zweck erstellt, aber es funktioniert nicht. Ich verwende scrapy.FormRequest anmelden und mit, was ich aus der Dokumentation lesen, so weit, ich habe den folgenden Code-Setup:

class HomelyspiderSpider(scrapy.Spider): 
    name = "homelyspider" 
    allowed_domains = ["homely.com.au"] 
    start_urls = ['https://homely.com.au/'] 

    def parse(self, response): 

      yield scrapy.FormRequest.from_response(
       response, 
       formxpath='.//div[@class="Modal-body"]/form', 
       formdata={ 
        'usernameOrEmail': 'myusername',    
        'password': 'mypassword', 
       }, 
       clickdata = { "type": "Submit" }, 
       callback=self.after_login 
      ) 
    def after_login(self, response): 
      "DO SCRAPING NOW" 

Login-Seite HTML:

<div class="Auth Auth--modal"> 
    <div class="signin "> 
     <div class="Modal-header"> 
      <h1 class="Modal-title">Sign in</h1> 
     </div> 
     <div class="Modal-body"> 
      <p class="subtitle">Instant sign in with Facebook or Google:</p><a class="Button Button--icon Button--facebook small-12" href="/authentication/redirect/Facebook"><span role="presentation" class="icon-wrapper"><svg class="icon icon-facebook"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-facebook"></use></svg></span><span class="label">Continue with Facebook</span></a><a class="Button Button--icon Button--google small-12" href="/authentication/redirect/Google"><span role="presentation" class="icon-wrapper"><svg class="icon icon-google"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-google"></use></svg></span><span class="label">Continue with Google</span></a> 
      <p>or using your email:</p> 
      <form> 
       <label class=""> 
        <input type="text" aria-label="Email or Username" required="" pattern="^[^-\s].+" title="Please enter a valid value" name="usernameOrEmail" placeholder="Email or Username" class="FormControl" value=""> 
       </label> 
       <label class=""> 
        <input type="password" aria-label="Password" required="" pattern="^[^-\s].+" title="Please enter a valid value" name="password" placeholder="Password" class="FormControl"> 
       </label> 
       <button class="Button Button--alt small-12" type="submit"><span class="Button-message">Sign In</span> 
       </button> 
      </form> 
      <p class="forgotten"> 
       <button class="ButtonLink">Forgot Password?</button> 
      </p> 
     </div> 
     <div class="Modal-line"></div> 
     <div class="Modal-footer"> 
      <p> 
       <!-- react-text: 71 -->Not yet a member? 
       <!-- /react-text --> 
       <button class="ButtonLink">Register with Homely</button> 
      </p> 
     </div> 
    </div> 
</div> 

Ich weiß, das ist irrelevant weil die von ist in der Seite, aber ich zeige immer noch die Schritte und die Elemente mit den Links zur Verfügung gestellt.

Dies ist die Hauptseite wo ich Einloggen klicken müssen:

enter image description here

enter image description here

Dann kommt die Anmelden Popup, die das Formularcode enthält, dass ich haben vorher bereitgestellt:

enter image description here

Was mache ich hier falsch? Von dem, was ich von scrapy DOCs verstehe, sollte mein scrapy Formanforderungscode arbeiten, Recht?

Antwort

0

Valueerror: No in gefunden Element> es das Formular nicht finden, dass ...

+0

ich das auch sehen kann .. können Sie sagen, warum? das Formular xpath ist in Ordnung –

+0

nein nicht wirklich, da ich auch Fehler bei der Verwendung von XPath bekomme nicht wissen, warum – minime

+0

ich sehe das Problem jetzt das Formular nicht zeigt, bis ich auf den Anmelden-Button klicken –

Verwandte Themen