2017-12-20 11 views
0

Ich bin neu in scrapy, versuche Google News vom dem angegebenen Link zu extrahieren Gebrüll:Wie extrahiert Google News mit bestimmten Schlüsselwort mit Scrapy?

https://www.google.co.in/search?q=cholera+news&safe=strict&source=lnms&tbm=nws&sa=X&ved=0ahUKEwik0KLV-JfYAhWLpY8KHVpaAL0Q_AUICigB&biw=1863&bih=966 

„Cholera“ Schlüsselwort wurde zur Verfügung gestellt, die kleinen Blöcke von verschiedenen Nachrichten zeigt, die mit Cholera Schlüsseln Welt weiter versuche ich diese mit scrapy, um jeden Block zu extrahieren, der einzelne Nachrichten enthält.

fetch("https://www.google.co.in/search?q=cholera+news&safe=strict&source=lnms&tbm=nws&sa=X&ved=0ahUKEwik0KLV-JfYAhWLpY8KHVpaAL0Q_AUICigB&biw=1863&bih=966") 

response.css(".ts._JGs._KHs._oGs._KGs._jHs::text").extract() 

wo ".ts._JGs._KHs._oGs._KGs._jHs :: Text" die "div class =" repräsentieren ts _JGs _KHs _oGs _KGs _jHs“für jeden Block von Nachrichten.

aber es keine Rückkehr.

+0

Sie 'sollte mit https: // news.google.com /' als die URL meiner Meinung nach, dass , gehe zum Suchfeld und fülle das Suchformular aus. durch Ihre Abfrage, in diesem Fall Cholera –

+0

Ziehen Sie in Betracht, die Daten über [RSS] (https://news.google.com/news/rss/search/section/q/cholera/cholera) abzurufen. – Casper

Antwort

0

in scrapy shell verwendet view(response) und Sie werden in Web-Browser sehen, was Sie fetch().

Google verwendet JavaScript-Daten anzuzeigen, aber es kann auch Seite senden, die kein JavaScript verwenden. aber Seite ohne JavaScript hat normalerweise einen Unterschied verschiedene Tags und Klassen.

Sie können auch JavaScript in Ihrem Browser deaktivieren und dann Google öffnen, um Tags anzuzeigen.

Try this:

response.css('#search td ::text').extract() 
0

Nach dem Kampf mich einen Weg finden, um die gewünschten Daten mit sehr einfachen Trick Schrott,

fetch("https://www.google.co.in/search?q=cholera+news&safe=strict&source=lnms&tbm=nws&sa=X&ved=0ahUKEwik0KLV-JfYAhWLpY8KHVpaAL0Q_AUICigB&biw=1863&bih=966") 

und CSS-Selektor "class =" g“Tag verwendet werden kann, um den gewünschten Block wie diesen zu extrahieren

response.css(".g").extract() 

die Liste aller einzelnen Nachrichtenblöcke, die fu sein können eitere verwendet auf der Basis von Listenindex wie folgt aus:

response.css(".g").extract()[0] 

oder

response.css(".g").extract()[1] 
Verwandte Themen