Очень простой проект Scrapy+Splash

Я разрабатываю очень простой проект Scrapy + Splash для сканирования веб-сайтов javascript. Это мой код:

splashtest.py:

import scrapy
from scrapy_splash import SplashRequest

class SplashSpider(scrapy.Spider):
    name = 'splash_spider'

    def start_requests(self):
        yield SplashRequest(
            url='http://aszx.altervista.org/scrapytest/test.html',
            callback=self.parse,
       )

    def parse(self, response):
        self.log('I have just visited ' + response.url)
        for squadre in response.css('#hello'):
            yield {
                'name': squadre.css('::text').extract_first(),
            }

settings.py:

BOT_NAME = 'emybet'

SPIDER_MODULES = ['emybet.spiders']
NEWSPIDER_MODULE = 'emybet.spiders'

SPLASH_URL = 'http://localhost:8050'
DOWNLOADER_MIDDLEWARES = {
    'scrapy_splash.SplashCookiesMiddleware': 723,
    'scrapy_splash.SplashMiddleware': 725,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}
SPIDER_MIDDLEWARES = {
    'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'

HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'

Это мой ответ:

# scrapy runspider splashtest.py
2017-11-18 10:10:21 [scrapy] INFO: Scrapy 1.0.5.post4+g4b324a8 started (bot: scrapybot)
2017-11-18 10:10:21 [scrapy] INFO: Optional features available: ssl, http11
2017-11-18 10:10:21 [scrapy] INFO: Overridden settings: {}
2017-11-18 10:10:21 [scrapy] INFO: Enabled extensions: CloseSpider, TelnetConsole, LogStats, CoreStats, SpiderState
2017-11-18 10:10:22 [scrapy] INFO: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, MetaRefreshMiddleware, HttpCompressionMiddleware, RedirectMiddleware, CookiesMiddleware, ChunkedTransferMiddleware, DownloaderStats
2017-11-18 10:10:22 [scrapy] INFO: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware
2017-11-18 10:10:22 [scrapy] INFO: Enabled item pipelines:
2017-11-18 10:10:22 [scrapy] INFO: Spider opened
2017-11-18 10:10:22 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2017-11-18 10:10:22 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023
2017-11-18 10:10:22 [scrapy] DEBUG: Crawled (200) <GET http://aszx.altervista.org/scrapytest/test.html> (referer: None)
2017-11-18 10:10:22 [splash_spider] DEBUG: I have just visited http://aszx.altervista.org/scrapytest/test.html
2017-11-18 10:10:22 [scrapy] DEBUG: Scraped from <200 http://aszx.altervista.org/scrapytest/test.html>
{'name': u'No Javascript'}
2017-11-18 10:10:22 [scrapy] INFO: Closing spider (finished)
2017-11-18 10:10:22 [scrapy] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 252,
 'downloader/request_count': 1,
 'downloader/request_method_count/GET': 1,
 'downloader/response_bytes': 392,
 'downloader/response_count': 1,
 'downloader/response_status_count/200': 1,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2017, 11, 18, 9, 10, 22, 975769),
 'item_scraped_count': 1,
 'log_count/DEBUG': 4,
 'log_count/INFO': 7,
 'response_received_count': 1,
 'scheduler/dequeued': 1,
 'scheduler/dequeued/memory': 1,
 'scheduler/enqueued': 1,
 'scheduler/enqueued/memory': 1,
 'start_time': datetime.datetime(2017, 11, 18, 9, 10, 22, 469984)}
2017-11-18 10:10:22 [scrapy] INFO: Spider closed (finished)

Поэтому я не получаю загруженный контент javascript. Splash работает, потому что если я укажу в своем браузере http://localhost:8050, я увижу страницу Splash.

Так в чем проблема ?

Спасибо


person xRobot    schedule 18.11.2017    source источник


Ответы (1)


arrow_upward
1
arrow_downward

Проблема в том, что я не запускал проект scrapy с помощью команды: «имя стартового проекта scrapy», а сам создавал папки и файлы.

person xRobot    schedule 18.11.2017
comment
Да, вам нужно придерживаться соглашения об именах, если вы создаете его самостоятельно (например, когда вы копируете паука). Afaik, поскольку ваше имя класса было SplashSpider, имя var должно быть «всплеск» - person jeroen e; 18.11.2017