Python 网络爬虫技巧分享:优化 Selenium 滚动加载网易新闻策略
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
# 初始化WebDriver
driver = webdriver.Chrome()
# 打开网易新闻首页
driver.get('http://www.163.com')
# 等待页面加载完成
wait = WebDriverWait(driver, 10)
# 滚动到页面底部
def scroll_to_bottom(driver):
# 获取页面的最大高度
total_height = driver.execute_script("return document.body.scrollHeight;")
# 循环滚动加载页面内容
while True:
# 滚动到当前最大高度
driver.execute_script("window.scrollTo(0, {});".format(total_height))
# 等待加载出更多内容
sleep(2) # 等待时间可以根据实际情况调整
# 比较滚动前后的页面高度
new_height = driver.execute_script("return document.body.scrollHeight;")
if new_height == total_height:
# 如果页面高度没有变化,说明加载完成或者没有更多内容
break
else:
total_height = new_height
# 使用滚动加载策略
scroll_to_bottom(driver)
# 关闭浏览器
driver.quit()
这段代码使用了Selenium WebDriver来控制Chrome浏览器访问网易新闻首页,并通过一个自定义函数scroll_to_bottom
实现了滚动加载页面内容的策略。在页面加载过程中,会不断检查页面高度的变化来判断是否还有新内容正在加载。这种策略可以用来处理需要滚动加载的网页,特别是那些动态加载内容的新闻或资讯类网站。
评论已关闭