Паук Scrapy прекратил ползать - PullRequest
0 голосов
/ 09 января 2020

Я попытался запустить Spider на сайте. asp, для которого требуется авторизация при входе в систему и некоторые сканирование на другой странице на том же сайте. Мне удалось успешно войти в систему вчера, используя мой паук, и я работал над очисткой данных с помощью другой функции, и когда я снова запустил паука после изменения функции las, паук перестал работать. Я понятия не имею, что происходит, я довольно плохо разбираюсь в Интернете. Вот код:

import scrapy
from scrapy.http import FormRequest
from scrapy.utils.response import open_in_browser

class TourSpider(scrapy.Spider):
    name = 'data'
    start_url= ["https://www.translamex.com/partners/login.asp?ret_link=%2Fpartners%2FDefault%2Easp&type=notLogged"]
    url="https://www.translamex.com/"

    def parse(self, response):
        return FormRequest.from_response(response=response,
        clickdata={'id':'Login1Button_DoLogin'}, 
        formdata={
            'login':"username",
            'password':"password"
        }, callback=self.next_page)

    def next_page(self,response):
        next_page=response.css('a[title="View Rates / Tarifas"]::attr(href)').extract_first()
        rates = response.urljoin(next_page)
        yield scrapy.Request(url=rates, callback=self.start_scraping)

    def start_scraping(self,response):
        open_in_browser(response)
        for row in response.css("tr.Row"):
            yield {
            "destination": row.css("td::text")[0].extract(),
            "tour": row.css(".td::text")[1].extract(),
            "public_rate_adult":row.css(".td::text")[2].extract(),
            "public_rate_child":row.css(".td::text")[3].extract(),
            "rate_adult":row.css(".td::text")[4].extract(),
            "rate_child":row.css(".td::text")[5].extract()
            }

Вот журнал:

020-01-08 22:55:13 [scrapy.utils.log] INFO: Scrapy 1.8.0 started (bot: Tour)
2020-01-08 22:55:13 [scrapy.utils.log] INFO: Versions: lxml 4.4.2.0, libxml2 2.9.9, cssselect 1.1.0, parsel 1.5.2, w3lib 1.21.0, Twisted 19.10.0, Python 3.7.5 (default, Oct 25 2019, 15:51:11) - [GCC 7.3.0], pyOpenSSL 19.1.0 (OpenSSL 1.1.1d  10 Sep 2019), cryptography 2.8, Platform Linux-4.15.0-72-generic-x86_64-with-debian-buster-sid
2020-01-08 22:55:13 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'Tour', 'FEED_FORMAT': 'json', 'FEED_URI': 'data.json', 'NEWSPIDER_MODULE': 'Tour.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['Tour.spiders']}
2020-01-08 22:55:13 [scrapy.extensions.telnet] INFO: Telnet Password: e98d8ad268ff9643
2020-01-08 22:55:13 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
 'scrapy.extensions.telnet.TelnetConsole',
 'scrapy.extensions.memusage.MemoryUsage',
 'scrapy.extensions.feedexport.FeedExporter',
 'scrapy.extensions.logstats.LogStats']
2020-01-08 22:55:13 [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']
2020-01-08 22:55:13 [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']
2020-01-08 22:55:13 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2020-01-08 22:55:13 [scrapy.core.engine] INFO: Spider opened
2020-01-08 22:55:13 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2020-01-08 22:55:13 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
2020-01-08 22:55:13 [scrapy.core.engine] INFO: Closing spider (finished)
2020-01-08 22:55:13 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'elapsed_time_seconds': 0.004019,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2020, 1, 8, 22, 55, 13, 962196),
 'log_count/INFO': 10,
 'memusage/max': 54812672,
 'memusage/startup': 54812672,
 'start_time': datetime.datetime(2020, 1, 8, 22, 55, 13, 958177)}
2020-01-08 22:55:13 [scrapy.core.engine] INFO: Spider closed (finished)

Код имел обыкновение пытаться очистить некоторые данные со страницы, которую я хотел, но безуспешно, но Я считаю, что это было только потому, что я использовал неправильный селектор css. Теперь он просто открывается и закрывается, ничего не делая.

1 Ответ

0 голосов
/ 09 января 2020

Я решил это. Я просто изменил назначение URL в начале. Мне пришлось создать новый метод следующим образом:

    def start_requests(self):
         start_url= "https://www.translamex.com/partners/login.asp?ret_link=%2Fpartners%2FDefault%2Easp&type=notLogged"
         yield scrapy.Request(url=start_url, callback=self.parse)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...