2017-05-28 5 views
0


Ich versuche Daten von dieser Website zu scraphen: Website link.
Ich möchte alle PDF-Dateien von bestimmten Daten herunterladen.
Während ich es geschafft habe, die Dateien von der ersten Seite zu bekommen und sie korrekt herunterzuladen, kann ich das Datum nicht ändern, so dass ich in früheren Daten zurückgehen und die alten PDFs auch bekommen kann.
Ich habe diese Linie versucht: scrapy.FormRequest.from_response(response,formxpath='//table//td//input[@type="text"]', formdata={'value': "20.05.2017"}, clickdata={'type':'submit'}, method='POST') in der Scrapy Shell, aber die view(response) zeigt mir immer das aktuelle Datum.

Ich bin mir nicht sicher, dass dies auf jeden Fall korrekt ist, ich bin neu in der Scrapy und ich versuche, die Dinge herauszufinden. Ich denke, dass die Methode korrekt ist, da wenn ich das Datum ändere, der Link sich nicht ändert, so sollte es POST sein und nicht GET.

Irgendwelche Ideen, wie ich das zum Laufen bringen kann?
Ich dachte, die FormRequest() wäre die beste Option hier, aber ich habe keine anderen Beispiele online gesehen und die Dokumentation auf der Website von scrapy hat mir nicht so viel geholfen, also habe ich versucht, die Beispiele zu studieren, die Anmeldeinformationen beinhalteten FormRequest.from_response()
Vielen Dank für Ihre Zeit.Wert eines HTML-Elements mit scrapy ändern

PS: Ich habe einen Screenshot des HTML-Code-Segments eingefügt, das mit der Datumsänderung zu tun hat. Screenshot

Antwort

1

Das Eingabefeld Name "Datum", nicht "Wert":

<form id="dailyFekForm" name="dailyFekForm" action="/idocs-nph/search/dailyFekForm.html" method="post"> 
     <br> 
     <div> 

     </div> 
     <div class="non-printable" style="padding-left:20px;"> 
      <table> 
       <tr> 
        <td style="font-size:100%; color:#3399FF;" align="left" > 
         <table> 
          <tr> 
           <td valign="center" style="font-size:100%; color:#3399FF;" ><b>Ημερομηνία Κυκλοφορίας</b></td> 
           <td> 
            <img title="Επιλέξτε ημερομηνία για ημερήσια κυκλοφορία" border="0" src="/idocs-nph/images/tooltip.gif" > 
           </td> 
          </tr> 
         </table> 
        </td> 
        <td><input id="date" name="date" type="text" value="29.05.2017"/></td> 
        <td><img src="/idocs-nph/images/admin/calendar.gif" id="triggerDate"/></td> 
        <td><input class="save" type="submit" value="Αναζήτηση" name="search" id="search"/></td> 
       </tr> 
      </table> 

Sie können auch überprüfen, was Ihr Browser sendet seine Entwickler-Tools: http://imgur.com/a/ztDtF (Check "Formulardaten" an der Unterseite) Daher

, können Sie verwenden:

scrapy.FormRequest.from_response(response,formdata={'date': "19.05.2017"}) 

Beispielsitzung scrapy-Shell, die verschiedenen Tabellenzeilen:

$ scrapy shell http://www.et.gr/idocs-nph/search/dailyFekForm.html 
>>> from pprint import pprint 
>>> pprint(response.css('table#result_table tr:not(.prop) td b').xpath('normalize-space()').getall()) 
['ΦΕΚ A 77 - 26.05.2017', 
'ΦΕΚ B 1836 - 25.05.2017', 
'ΦΕΚ B 1837 - 25.05.2017', 
(...) 
'ΦΕΚ Α.Α.Π. 112 - 25.05.2017', 
'ΦΕΚ Α.Α.Π. 113 - 26.05.2017', 
'ΦΕΚ Α.Α.Π. 114 - 26.05.2017', 
'ΦΕΚ Α.Α.Π. 115 - 26.05.2017'] 
>>> fetch(scrapy.FormRequest.from_response(response,formdata={'date': "19.05.2017"})) 
2017-05-29 14:42:50 [scrapy.core.engine] DEBUG: Crawled (200) <POST http://www.et.gr/idocs-nph/search/dailyFekForm.html> (referer: None) ['partial'] 
>>> pprint(response.css('table#result_table tr:not(.prop) td b').xpath('normalize-space()').getall()) 
['ΦΕΚ A 72 - 19.05.2017', 
'ΦΕΚ A 73 - 19.05.2017', 
'ΦΕΚ A 74 - 19.05.2017', 
(...) 
'ΦΕΚ Υ.Ο.Δ.Δ. 234 - 18.05.2017', 
'ΦΕΚ Α.Α.Π. 105 - 16.05.2017', 
'ΦΕΚ Α.Α.Π. 108 - 16.05.2017'] 
>>> fetch(scrapy.FormRequest.from_response(response,formdata={'date': "16.05.2017"})) 
2017-05-29 14:45:53 [scrapy.core.engine] DEBUG: Crawled (200) <POST http://www.et.gr/idocs-nph/search/dailyFekForm.html> (referer: None) ['partial'] 
>>> pprint(response.css('table#result_table tr:not(.prop) td b').xpath('normalize-space()').getall()) 
['ΦΕΚ A 69 - 16.05.2017', 
'ΦΕΚ B 1638 - 15.05.2017', 
'ΦΕΚ B 1639 - 15.05.2017', 
(...) 
'ΦΕΚ Υ.Ο.Δ.Δ. 228 - 16.05.2017', 
'ΦΕΚ Υ.Ο.Δ.Δ. 229 - 16.05.2017', 
'ΦΕΚ Α.Α.Π. 102 - 15.05.2017'] 
>>> 
+0

Vielen Dank für Ihre Zeit. Geht das für dich? Ich habe es in Scrapy Shell versucht und wenn ich die Ansicht (Antwort) benutze gibt es mir dasselbe Datum zurück. Sollte ich nicht die veränderte sehen? –

+0

Es funktioniert für mich. Siehe meine aktualisierte Antwort. –

+0

War nicht holen .. Ich fühle mich wie ein Idiot, ich habe seit 3 ​​Tagen für diesen Fehler gesucht. Vielen Dank, wirklich zu schätzen. –

Verwandte Themen