向下滚动时page_source发生变化时如何进行动态网页抓取

问题描述 投票:0回答:1
web-scraping web web-crawler
1个回答
0
投票

我们可以通过两种方式解决这个问题

  1. 使用 selenium 自动化滚动并提取相应的 div 标签
  2. 使用网络调试滚动时识别在后台进行的 XHR 请求。接受请求并以您喜欢的语言实现请求

在 Selenium with Ruby 中,您可以使用

execute_script
方法来运行滚动网页的 JavaScript 代码。以下是如何在 Ruby 中使用 Selenium 向下滚动的示例:

require 'selenium-webdriver'

# Set up the Selenium WebDriver
driver = Selenium::WebDriver.for :chrome

# Navigate to the webpage
driver.get("https://testwebsite.com")

# Scroll down the page
driver.execute_script("window.scrollBy(0, 500);")

# Wait for a few seconds to see the effect
sleep(rand(3..5))

# Close the browser
driver.quit

此示例使用 JavaScript 中的

window.scrollBy
方法将页面向下滚动指定的像素数(在本例中为 500 像素)。您可以根据您的要求调整值。

如果你想滚动到页面上的特定元素,可以使用

scrollIntoView
方法。例如:

require 'selenium-webdriver'

# Set up the Selenium WebDriver
driver = Selenium::WebDriver.for :chrome

# Navigate to the webpage
driver.get("https://testwebsite.com")

# Find the element you want to scroll to
element = driver.find_element(:id, 'exampleElement')

# Scroll to the element
driver.execute_script("arguments[0].scrollIntoView(true);", element)

# Wait for a few seconds to see the effect
sleep(rand(3..5))

# Close the browser
driver.quit

在此示例中,将

'exampleElement'
替换为要滚动到的元素的实际 ID 或其他定位器。
scrollIntoView
方法将元素滚动到浏览器窗口的可见区域。

© www.soinside.com 2019 - 2024. All rights reserved.