无法使用selenium scrapy进行分页,只能提取第一页的数据



我正在一个网站上抓取最近的客户评级,有几个页面。

问题是,我能够与";sortby";选项并选择";最近的";使用Selenium,并使用Scrapy为第一页刮取数据。然而,我无法提取其他页面的数据,SeleniumWeb驱动程序不知何故不会呈现下一个页面。我的意图是自动化数据抓取。

我是网络抓取的新手。此处附有代码片段(由于保密性,一些信息被删除(

import scrapy
import selenium.webdriver as webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait,Select
import time
from selenium.webdriver.support import expected_conditions as EC
from scrapy import Selector
from selenium.webdriver.edge.options import Options
from scrapy.utils.project import get_project_settings

class ABC(scrapy.Spider):
#"........."

def start_requests(self):
#"  ......  "
yield scrapy.Request(url)
def parse(self, response):
settings =get_project_settings()
driver_path = settings.get('EDGE_DRIVER_PATH')
options = Options()
options.add_argument("headless")

ser=Service(driver_path)
driver = webdriver.Edge(service=ser,options = options)
driver.get(response.url)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID,"sort-order-dropdown")))
element_dropdown=driver.find_element(By.ID,"sort-order-dropdown")
select=Select(element_dropdown)
select.select_by_value("recent")
time.sleep(5)
for review in response.css('[data-hook="review"]':
res={
"rating": review.css('[class="a-icon-alt"]::text').get(),
}
yield res 


next_page =response.xpath('//a[text()="Next page"]/@href').get()
if next_page:
yield scrapy.Request(response.urljoin(next_page))

driver.quit()

看起来您使用的是Scrapy和Selenium而不是scrapy_selenium(我在代码中没有看到任何SeleniumRequest

你当前的蜘蛛是这样工作的:

  1. 使用Scrapy获取页面
  2. 使用Selenium网络驱动程序获取相同的页面
  3. 使用Selenium执行一些操作
  4. 分析废料response(用于ratingnext_page(

正如您所看到的,您从未使用/解析Selenium结果。

最新更新