Kirjoittaja Aihe: "RATKAISTU":Python 2.7 ja Scrapy kaatuu: DNS lookup failed  (Luettu 6616 kertaa)

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Moi

Tein Pythonilla ja Scrapy kirjastolla(?) palikan nopeaa web scrapingiä varten (ei ollutkaan niin nopeaa, ja käsin olisi varmaan jo rappailtu).
Scrapy kaatuu virheeseen: DNS lookup failed. Itseä hämää 'www.domain'  ja koen, että sen tulisi olla 'www.domain.tld'?
Tuskin tämä liittyy SELinuxiin?

Tiedosto(t) on sijoitettu /var/www/py/scraper/scraper/[lp.py]

Ääni...domain muutettu :) Ja on testattu, että toimii.

Koodia: [Valitse]
# scrapy runspider lp.py -o test.json
2016-01-23 00:21:24 [scrapy] INFO: Scrapy 1.0.4 started (bot: lpspider)
2016-01-23 00:21:24 [scrapy] INFO: Optional features available: ssl, http11
2016-01-23 00:21:24 [scrapy] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'lpspider.spiders', 'FEED_FORMAT': 'json', 'SPIDER_MODULES': ['lpspider.spiders'], 'FEED_URI': 'test.json', 'BOT_NAME': 'lpspider'}
2016-01-23 00:21:24 [scrapy] INFO: Enabled extensions: CloseSpider, FeedExporter, TelnetConsole, LogStats, CoreStats, SpiderState
2016-01-23 00:21:24 [scrapy] INFO: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, MetaRefreshMiddleware, HttpCompressionMiddleware, RedirectMiddleware, CookiesMiddleware, ChunkedTransferMiddleware, DownloaderStats
2016-01-23 00:21:24 [scrapy] INFO: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware
2016-01-23 00:21:24 [scrapy] INFO: Enabled item pipelines:
2016-01-23 00:21:24 [scrapy] INFO: Spider opened
2016-01-23 00:21:24 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2016-01-23 00:21:24 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023
2016-01-23 00:21:24 [scrapy] DEBUG: Retrying <GET http://www.domain.tld> (failed 1 times): DNS lookup failed: address 'www.domain' not found: [Errno -2] Name or service not known.
2016-01-23 00:21:24 [scrapy] DEBUG: Retrying <GET http://www.domain.tld> (failed 2 times): DNS lookup failed: address 'www.domain' not found: [Errno -2] Name or service not known.
2016-01-23 00:21:24 [scrapy] DEBUG: Gave up retrying <GET http://www.domain.tld> (failed 3 times): DNS lookup failed: address 'www.domain' not found: [Errno -2] Name or service not known.
2016-01-23 00:21:24 [scrapy] ERROR: Error downloading <GET http://www.domain.tld>: DNS lookup failed: address 'www.domain' not found: [Errno -2] Name or service not known.
2016-01-23 00:21:24 [scrapy] INFO: Closing spider (finished)
2016-01-23 00:21:24 [scrapy] INFO: Dumping Scrapy stats:
{'downloader/exception_count': 3,
 'downloader/exception_type_count/twisted.internet.error.DNSLookupError': 3,
 'downloader/request_bytes': 687,
 'downloader/request_count': 3,
 'downloader/request_method_count/GET': 3,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2016, 1, 22, 22, 21, 24, 733750),
 'log_count/DEBUG': 4,
 'log_count/ERROR': 1,
 'log_count/INFO': 7,
 'scheduler/dequeued': 3,
 'scheduler/dequeued/memory': 3,
 'scheduler/enqueued': 3,
 'scheduler/enqueued/memory': 3,
 'start_time': datetime.datetime(2016, 1, 22, 22, 21, 24, 512501)}
2016-01-23 00:21:24 [scrapy] INFO: Spider closed (finished)
« Viimeksi muokattu: 23.01.16 - klo:15.35 kirjoittanut JA5U »

SuperOscar

  • Käyttäjä
  • Viestejä: 3993
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Python 2.7 ja Scrapy kaatuu: DNS lookup failed
« Vastaus #1 : 23.01.16 - klo:10.39 »
Scrapya tuntematta kyllähän tässä jokin ristiriita näkyy olevan:

Koodia: [Valitse]
ERROR: Error downloading <GET http://www.domain.tld>: DNS lookup failed: address 'www.domain' not found
Pitäisikö ”http://www.domain.tld” päättää vinoviivaan? Vai pitäisikö parametriin lisätä tiedostonimi, esim. ”http://www.domain.tld/index.html”? Ilman Python-koodia on vähän vaikea tietää, mitä tässä tapahtuu.
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 13.2-RELEASE; RPi 2: LibreELEC 11

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Vs: Python 2.7 ja Scrapy kaatuu: DNS lookup failed
« Vastaus #2 : 23.01.16 - klo:15.27 »
Vika olikin tekijässä ja vuorokaudenajassa :)

Mielestäni kyllä copy-pastetin tuota samaa URLia moneen otteeseen koodin ja seliamen välillä.
Tänään uusilla silmillä näyttää siltä, että se tld puuttui kuitenkin.

EDIT: joten laitettakoon kaikille hyvitykseksi "koodi" (surkuhupaisasti kovakoodatuilla arvoilla)

Koodia: [Valitse]
import scrapy

class lpspider(scrapy.Spider):
    name = 'lpspider'
    start_urls = ['http://www.domain.tld/']
    def parse(self, response):
        for lang in ['en','sv','de','fi']:
            for pg in range(1,11):
                no = "%s/?pg=%s" % (lang,pg)
                fetch = response.url+no
                yield scrapy.Request(fetch, self.parse_items)

    def parse_items(self, response):
        for item in response.css('#list ul li'):
            name = item.css('h3 a::text').extract()
            latin = item.css('h4 a::text').extract()
            yield {'name':name,'latin':latin}
« Viimeksi muokattu: 23.01.16 - klo:15.34 kirjoittanut JA5U »