无法使用Selenium-Scrapy进行分页,仅提取第一页的数据

cwdobuhd  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(221)

我刮最近的客户评级的网站,有几页。
问题是,我可以使用Selenium与“sortby”选项交互并选择“most recent”,使用Scrapy抓取第一页的数据。但是,我无法提取其他页的数据,Selenium Web驱动程序不知何故无法呈现下一页。我的意图是自动化数据抓取。
我是一个新的网页抓取。一个代码片段附在这里(一些信息被删除,由于保密)

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()
h4cxqtbf

h4cxqtbf1#

看起来您使用的是Scrapy和Selenium而不是scrapy_selenium(我在您的代码中没有看到任何SeleniumRequest
您当前的spider的工作方式如下:
1.使用Scrapy获取页面
1.使用Selenium webdriver获取相同的页面
1.使用Selenium执行一些操作
1.剖析片段response(适用于ratingnext_page
如您所见,您从未使用/ parse Selenium结果。

相关问题