Как заставить Selenium передавать исходный код, сгенерированный Javascript, в Scrapy?

#selenium #scrapy #scrapy-spider

#селен #scrapy

Вопрос:

Я создал базовый Scrapy Spider, который очищает страницу категории продукта сайта, открывает все отдельные страницы продукта и очищает некоторую информацию о продукте. Когда для одной категории есть несколько страниц, сайт использует Javascript для обновления списка товаров (URL-адрес не меняется).

Я пытаюсь использовать Selenium для доступа к страницам, сгенерированным JS.

 import time
import scrapy
from myscraper.items import myscraperItem
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

class websiteSpider(scrapy.Spider):
    name = "myspider"
    allowed_domains = ["example.com"]
    start_urls = (
        'http://www.example.com/cat1',
    )

    def __init__(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(10)

    def parse(self, response):
        self.driver.get(response.url)

        while True:
            next = self.driver.find_element_by_css_selector("li.active a#page_right div")

            try:
                for href in response.css('div.productlist h3 a::attr(href)'):
                    url = response.urljoin(href.extract())
                    yield scrapy.Request(url, callback=self.parse_product_page)
                time.sleep(10)
                next.click()
            except:
                break

    def parse_product_page(self, response):
      ...
  

Когда я запускаю это, я только очищаю продукты с первой страницы, как я могу перенести недавно сгенерированный исходный код для страниц 2 из Selenium в Scrapy? Я попробовал несколько вещей, связанных:

  hxs = HtmlXPathSelector(response)
  

Но я действительно этого не понимаю, любая помощь была бы очень признательна!!

Спасибо

Комментарии:

1. Я уверен, что вы можете сделать это без использования selenium, откройте вкладку «Сеть» и перейдите на следующую страницу, будет сделан запрос, и вы получите ответ с желаемыми объектами. Вы можете сделать этот запрос напрямую. Если вам нужна дополнительная помощь, предоставьте ссылку на соответствующую страницу.

2. Спасибо @RafaelAlmeida — есть идеи для homebase.co.uk/en/homebaseuk/decorating /… ?