爬虫获得动态总页数wait_for_selector
时间: 2024-09-18 21:04:52 浏览: 61
在网页爬取过程中,当你遇到动态加载内容或分页的情况,有些页面元素可能会通过JavaScript动态生成,这时直接请求HTML源码可能获取不到所有信息。`wait_for_selector`通常是在像Selenium这样的浏览器自动化工具或者某些Python爬虫库(如Scrapy的WaitMiddleware或Puppeteer API)中使用的功能。
`wait_for_selector`的作用是让你的爬虫等待直到某个特定的选择器(CSS或XPath表达式)在页面上出现或者满足一定条件,然后才继续执行后续的抓取操作。例如,如果你想获取动态加载的分页链接,你可以设置一个延时,等待下一页按钮load完成:
```python
from selenium.webdriver.common.by import By
from time import sleep
# 假设driver是已经启动的Selenium实例
button_xpath = '//a[@class="pagination-next"]'
while True:
# 使用WebDriverWait等待selector存在并可见
element = driver.wait.until(
EC.presence_of_element_located((By.XPATH, button_xpath)),
'Timed out waiting for next page button to load'
)
# 获取当前页数和下一步跳转URL
current_page = int(element.text)
next_url = element.get_attribute('href')
if current_page == total_pages: # 如果这是最后一页
break
# 跳到下一页
driver.get(next_url)
sleep(2) # 防止过于频繁请求导致封IP
```
在这个例子中,`total_pages`需要你在循环外先获取到动态总页数,可能是通过其他方法计算得出,或者从初始页面加载时就尝试找到这个总数。
阅读全文