Scrapy + Selenium - как использовать панель поиска после входа в систему - PullRequest
0 голосов
/ 23 апреля 2020

Я сейчас новичок в Webscraping topi c. Я успешно создал Selenium scraper. Теперь я хочу сделать то же самое с Scrapy. Я проверил сайт (используя robots.txt), и он позволяет отказаться с помощью роботов. У меня есть логин код:

class QuotesSpider(Spider):
    name = 'scr'
    start_urls = ('https://alison.com/login',)
    def parse(self, response):
        return FormRequest.from_response(response,
                                         formdata={'password': 'aaa',
                                                   'email': 'aaa'},
                                         callback=self.scrape_pages)

    def scrape_pages(self, response):
        open_in_browser(response)

Теперь мне нужно найти курсы, связанные с финансами. Вот успешный код Selenium:

    search=driver.find_element_by_id("autocomplete")
    search.send_keys("Finance")
    driver.find_element_by_id("search_icon").click()
    time.sleep(10)

Что мне добавить и где в мой код Scrapy, чтобы он работал? Я слышал, что есть также подход Scrapy + Selenium, но я не знаю, как это реализовать. Я не смог найти какой-либо актуальный учебник по этому делу.

Заранее благодарю за помощь.

1 Ответ

0 голосов
/ 24 апреля 2020
class QuotesSpider(Spider):
    name = 'scr'
    start_urls = ('https://alison.com/login',)
    def parse(self, response):
        yield FormRequest.from_response(response,
                                         formdata={'password': 'aaa',
                                                   'email': 'aaa'},
                                         callback=self.scrape_pages)

    def scrape_pages(self, response):
        open_in_browser(response)
        #if you want to query
        #url = "https://alison.com/courses?query=finance"
        #if you want a specific course for example financial literacy
        url = "https://alison.com/course/financial-literacy"
        yield scrapy.Request(url,callback=self.parse_course)

    def parse_course(self,response):
        open_in_browser(response)
        #do your parsing here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...