我正在为最近的客户评级刮一个网站,有几个页面。
问题是,我能够与"sortby“选项交互,并使用Selenium选择”最近“,并使用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()发布于 2022-09-18 10:59:36
看起来您使用的是Scrapy和Selenium,而不是scrapy_selenium (我在代码中没有看到任何SeleniumRequest。
你现在的蜘蛛是这样工作的:
使用Scrapy获取页面,使用Selenium webdriver
response (用于rating和next_page))
正如您所看到的,您从未使用/解析Selenium结果。
https://stackoverflow.com/questions/73754724
复制相似问题