Как перевести страницу Selenium в Scrapy for Dynami c при входе в систему? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть код Selenium, который я хочу использовать в своей Scrapy. Конечно, я проверял раньше, и этот сайт позволяет роботам.

В настоящее время у меня есть логин Scrapy:

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


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

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

Код Selenium после входа в систему:

    print(driver.page_source)

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

    time.sleep(15)

    data=[]
    while True:
          try:
             next_page_btn = driver.find_element_by_link_text("Next")
             l = driver.find_elements_by_xpath("//ul[@id='mobile-scroll-anchor']//li//div/div[1]/a[2]")
             for link in l:
                 my_href = link.get_attribute("href")
                 windows_before  = driver.current_window_handle
                 driver.execute_script("window.open('" + my_href +"');")
                 windows_after = driver.window_handles
                 new_window = [x for x in windows_after if x != windows_before][0] 
                 driver.switch_to.window(new_window)        
                 time.sleep(7) 
                 print(driver.title)
                 time.sleep(2)
                 x=driver.find_elements_by_xpath("//ul[@class='course-banner--info']//li[2]//div[2]//h4")[0].text
                 time.sleep(2)
                 try:
                     z=driver.find_element_by_xpath("//li[@class='course-icons']/div[2]/h3[contains(text(),'Duration')]/following-sibling::span").text
                     time.sleep(2)
                 except:
                     pass
                     time.sleep(2)
                     z='No'
                 print("A")
                 time.sleep(3)
                 data=[]
                 data.append(x)
                 time.sleep(3)
                 driver.close() 
                 driver.switch_to.window(windows_before) 
             next_page_btn = driver.find_element_by_link_text("Next").click()
             time.sleep(5) 

Я предполагаю, что должен импортировать все библиотеки из кода Selenium. Но что дальше? Как внедрить этот код в Scrapy? Не могли бы вы мне помочь? Могу ли я поместить весь этот код в мою функцию scrape_pages? Можете ли вы написать мне пример кода, который превращает Selenium в Scrapy?

Большое вам спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...