Python点击“显示更多”按钮后爬取数据问题求助(URL无变化)
解决动态加载内容爬取问题
你的问题出在点击按钮后用requests.get(url)重新请求页面——这类“显示更多”按钮通常是通过AJAX动态加载内容,页面URL不会变化,而requests只能获取页面初始的静态HTML,拿不到浏览器执行JS后渲染的新内容。
正确的做法是直接从Selenium控制的浏览器页面中提取点击后的内容,步骤如下:
- 点击按钮后,必须等待内容加载完成(避免因加载未完成拿到旧数据)
- 直接从
driver中获取页面源码或具体元素,无需再用requests请求
修正后的代码示例:
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 初始化浏览器(示例用Chrome,需对应配置驱动) driver = webdriver.Chrome() driver.get("你的目标页面URL") # 点击"显示更多"按钮 driver.find_element("xpath", "//button[@id='gsc_bpf_more']").click() # 显式等待:等待加载后的元素出现(根据实际页面调整定位方式和等待条件) # 比如等待新的条目加载完成,这里假设新内容的元素class是gsc_a_tr WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CLASS_NAME, "gsc_a_tr")) ) # 获取点击后的页面源码,后续可用BeautifulSoup等工具解析 page_source = driver.page_source # 或者直接提取具体元素内容,比如所有条目文本 items = driver.find_elements(By.CLASS_NAME, "gsc_a_tr") for item in items: print(item.text) # 关闭浏览器 driver.quit()
关键说明
- 显式等待比强制等待(
time.sleep())更可靠,能在内容加载完成后立即执行后续操作 - 若点击按钮后需要多次加载(比如连续点击“显示更多”直到全部内容加载),可以用循环+判断条件实现(比如判断按钮是否还可点击)
内容的提问来源于stack exchange,提问作者Abdullah N Bani Yaseen
相关产品推荐
相关产品推荐

