我已经构建了一个基本的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)
但我真的不明白,任何帮助都会非常感激!!
由于