2016-11-28 3 views
-1

Ich bin völlig neu in Scrapy, jetzt arbeite ich an einem Projekt, das ich Scrapy Crawling von dieser Website verwenden muss: https://www.google.com/partners/#a_search;bdgt=10000;lang=en;locn=United%20States;motv=0;wbst=http%253A%252F%252F
Ich kann nicht die gesamte URL Antwort in Scrapy übergeben, also habe ich PYCHARM zu debuggen es, ich fand, dass ich die URL vor # nur übergeben kann, kann jemand mir helfen, dieses Problem zu lösen? Danke vielmals!!!!Warum kann ich nicht Scrapy verwenden, um von dieser URL zu crawlen (mit "#" darin)?

+0

Hoffnung [diese] (http://stackoverflow.com/questions/33395133/scrapy-google-crawl-doesnt-work/33395421#33395421) hilft – eLRuLL

+0

Ich habe versucht, [link] (https: // www. google.com/partners/?a_search.))[Link](https://www.google.com/partners/?search...)dieser funktioniert nicht :( – jess1818

+0

Oder versuchen Sie PhantomJS + Selenium Inside Scrapy .... [siehe meine Antwort] (http://stackoverflow.com/a/40833619/4094231) – Umair

Antwort

3

URL-Fragment (der Teil nach #) wird nicht an entfernte Webserver gesendet; So funktioniert HTTP. Das Fragment wird von einem Browser bearbeitet, nachdem die Anfrage gesendet wurde. im Fall von Google löst es einige JavaScript-Funktionen usw. aus

Scrapy ist kein Browser - es wertet JavaScript nicht aus; Scrapy lädt Daten einfach über HTTP herunter. Das ist der Grund dafür, dass Fragment von der URL entfernt wird, wenn Scrapy eine Seite abruft - es gibt keine Möglichkeit, sie zu verwenden.

Wenn Sie solche URLs Fragmente behandeln möchten, haben Sie zwei Möglichkeiten:

  1. emulieren, was Browser tun - prüfen, was HTTP fordert er machen wird, wenn Sie diese URL übergeben und emulieren sie in Scrapy;
  2. Verwenden Sie eine Browser-Engine zum Rendern einer Seite, z. Selen, PhantomJS oder Splash. Es gibt ein Plugin für scrapy + splash-Integration: https://github.com/scrapy-plugins/scrapy-splash.
+0

Vielen Dank, ich denke, dass Splash genau das ist, was ich suche – jess1818

Verwandte Themen