【发布时间】:2021-07-19 06:07:43
【问题描述】:
我需要为this page做分页:
我阅读了this question 并尝试了这个:
scrolls = 10
while True:
scrolls -= 1
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
time.sleep(3)
if scrolls < 0:
break
我需要向下滚动才能获得所有产品,但我不知道我需要滚动多少次才能获得所有产品。
我也尝试过大屏幕
'SELENIUM_DRIVER_ARGUMENTS': ['--no-sandbox', '--window-size=1920,30000'],
向下滚动
time.sleep(10)
self.driver.execute_script("window.scrollBy(0, 30000);")
有人知道如何获得所有产品吗? 如果 Selenium 不适合这种情况,我愿意接受另一种解决方案。 谢谢。
更新 1: 我需要拥有所有产品 ID。为了获得产品 ID,我使用了这个:
products = response.css('div.jfJiHa > .iepIep')
for product in products:
detail_link = product.css('a.jXwbaQ::attr("href")').get()
product_id = re.findall(r'products/(\d+)', detail_link)[0]
【问题讨论】:
-
我认为您的问题中缺少的关键是您如何提取数据?我认为当您向下滚动时“已看到”元素会消失,因此您无法一次加载页面上的所有内容。
-
@tomjn 是的,请问您有什么想法吗?
-
是的,但你没有回答我的问题。你是如何提取物品的?
-
@tomjn 我更新了我的问题并回答了你的问题,谢谢
-
谢谢,但是你能不能给我们整个
parse函数或者你叫它的任何东西,而不是小的sn-ps,这样我们就可以看到selenium代码是如何与Selector交互的代码?如果不是太多,整个蜘蛛会更好
标签: python selenium selenium-webdriver scroll scrapy