如何让Selenium将Javascript生成的源代码传递给Scrapy?

时间:2016-10-01 20:05:35

标签: selenium scrapy scrapy-spider

我已经构建了一个基本的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)

但我真的不明白,任何帮助都会非常感激!!

由于

0 个答案:

没有答案