Ich arbeite an einem Django-Projekt und möchte einige Neuigkeiten auf der Homepage veröffentlichen. Ich habe vor kurzem mit scrapy interagiert, wenn ich Code mit "scarpy shell" liefere, kann dieser Code die Daten erfolgreich abrufen. Aber wenn ich diesen Code in ein Skript setzen dieser Code den Newsfeed zu der Vorlage zu automatisieren wird nicht funktionieren und erhöhen „Fehler holen nicht definieren“Wie Daten mit Scrapy abrufen?
import scrapy
from scrapy import *
fetch("https://www.google.co.in/search?q=cholera&safe=strict&source=lnms&tbm=nws&sa")
news_links = response.css(".r").extract()[0].encode('utf-8')
news_texts = response.css(".st").extract()[0].encode('utf-8')
news_images = response.css(".th").extract()[0].encode('utf-8')
Ich habe versucht, dieses:
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
def start_requests(self):
urls = [
'https://www.google.co.in/search?q=cholera&safe=strict&source=lnms&tbm=nws&sa']
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
page = response.css(".r").extract()
filename = 'quotes-%s.html' % page
with open(filename, 'wb') as f:
f.write(response.body)
self.log('Saved file %s' % filename)
mit der Befehl:
scrapy crawl quotes
Welche funktioniert auch nicht, Wie kann ich diesen Code in ein Skript umwandeln.
Fehlerprotokoll:
scrapy crawl news
2017-12-22 14:24:33 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: newsfee)
2017-12-22 14:24:33 [scrapy.utils.log] INFO: Overridden settings: {'NEWSPIDER_M}
2017-12-22 14:24:33 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.memusage.MemoryUsage',
'scrapy.extensions.logstats.LogStats',
'scrapy.extensions.telnet.TelnetConsole',
'scrapy.extensions.corestats.CoreStats']
2017-12-22 14:24:33 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware',
'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
'scrapy.downloadermiddlewares.retry.RetryMiddleware',
'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
'scrapy.downloadermiddlewares.stats.DownloaderStats']
2017-12-22 14:24:33 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
'scrapy.spidermiddlewares.referer.RefererMiddleware',
'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
'scrapy.spidermiddlewares.depth.DepthMiddleware']
2017-12-22 14:24:33 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2017-12-22 14:24:33 [scrapy.core.engine] INFO: Spider opened
2017-12-22 14:24:33 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pa)
2017-12-22 14:24:33 [scrapy.extensions.telnet] DEBUG: Telnet console listening 4
2017-12-22 14:24:33 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.)
2017-12-22 14:24:33 [scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden b>
2017-12-22 14:24:33 [scrapy.core.engine] INFO: Closing spider (finished)
2017-12-22 14:24:33 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/exception_count': 1,
'downloader/exception_type_count/scrapy.exceptions.IgnoreRequest': 1,
'downloader/request_bytes': 224,
'downloader/request_count': 1,
'downloader/request_method_count/GET': 1,
'downloader/response_bytes': 2348,
'downloader/response_count': 1,
'downloader/response_status_count/200': 1,
'finish_reason': 'finished',
'finish_time': datetime.datetime(2017, 12, 22, 8, 54, 33, 954793),
'log_count/DEBUG': 3,
'log_count/INFO': 7,
'memusage/max': 65478656,
'memusage/startup': 65478656,
'response_received_count': 1,
'scheduler/dequeued': 1,
'scheduler/dequeued/memory': 1,
'scheduler/enqueued': 1,
'scheduler/enqueued/memory': 1,
'start_time': datetime.datetime(2017, 12, 22, 8, 54, 33, 295945)}
2017-12-22 14:24:33 [scrapy.core.engine] INFO: Spider closed (finished)
Ich habe dort zwei Zeilen hinzugefügt "f = öffnen (" my_file.txt "," wb ")" in Ihrem Code "f.write (news_links)", und nichts ändert sich, ich habe das Protokoll aktualisiert nicht Generieren Sie nichts, keine Ausgabedateien – jax
Sind Sie sicher, dass Sie scrapy crawl news im obersten "newsfeed" -Verzeichnis ausführen? Ansonsten ist alles andere ziemlich Standard und sollte funktionieren. Und der Name in 'scrapy crawl NAME' sollte mit dem Namen-Parameter übereinstimmen, den Sie in Ihrer NewsSpider-Klasse festgelegt haben. – Jacquot
@jacqout Ja, wenn ich den vom scrapy-Dokument bereitgestellten Beispielcode ausführe, erzeugte er tatsächlich zwei HTML-Antwortdateien quote_1.html und quote_2.html aber In meinem Fall gibt es nichts zurück.:( – jax