Scrapy + Selenium - Как работать с функцией запроса на доход - PullRequest
0 голосов
/ 19 сентября 2019

Я новичок в Scrapy и Selenium.Я пытаюсь сканировать следующий веб-сайт: https://sabobic.blogabet.com. Поскольку на странице используется Javascript, я пытаюсь нажимать кнопки с Selenium.По сути, я просто хочу нажать на «Меню блога», а затем перейти в «Архив подборок».Это уже работает.

Однако я получаю сообщение об ошибке (см. Ниже), которое связано с моей функцией запроса на доходность, и я не знаю, как это исправить.

Мне кажется, что функция запроса на доходностьожидает URL.Но какой из них был бы здесь?


Это мой текущий код:

# -*- coding: utf-8 -*-
from scrapy import Spider
from selenium import webdriver
from scrapy.selector import Selector
from scrapy.http import Request
from time import sleep
from selenium.common.exceptions import NoSuchElementException

class AlltipsSpider(Spider):
    name = 'alltips'
    allowed_domains = ['blogabet.com']

    # We are not using the response parameter in this function because the start urls are not defined 
    # Our class Spider is searching for the function start_requests by default 
    # Request has to returned or yield 
    def start_requests(self):
        self.driver = webdriver.Chrome('C:\webdrivers\chromedriver.exe')
        # Place all user urls here
        self.driver.get('https://sabobic.blogabet.com')
        self.driver.find_element_by_id('currentTab').click()
        sleep(3)
        self.logger.info('Sleeping for 3 sec.')
        self.driver.find_element_by_xpath('//*[@id="_blog-menu"]/div[2]/div/div[2]/a[3]').click()
        sleep(7)
        self.logger.info('Sleeping for 7 sec.')
        # In this line the error occurs
        yield Request (callback=self.start_requests)



Это сообщение об ошибке:

2019-09-19 08:49:12 [scrapy.core.engine] ERROR: Error while obtaining start requests
Traceback (most recent call last):
  File "c:\users\iwi3hsg\anaconda3\lib\site-packages\scrapy\core\engine.py", line 127, in _next_request
    request = next(slot.start_requests)
  File "J:\tips\tips\spiders\alltips.py", line 27, in start_requests
    yield Request (callback=self.start_requests)
TypeError: __init__() missing 1 required positional argument: 'url'
2019-09-19 08:49:12 [scrapy.core.engine] INFO: Closing spider (finished)
2019-09-19 08:49:12 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'elapsed_time_seconds': 16.612739,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2019, 9, 19, 6, 49, 12, 811764),
 'log_count/DEBUG': 19,
 'log_count/ERROR': 1,
 'log_count/INFO': 12,
 'start_time': datetime.datetime(2019, 9, 19, 6, 48, 56, 199025)}
2019-09-19 08:49:12 [scrapy.core.engine] INFO: Spider closed (finished)
...