首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查下一页按钮可用或不使用python

如何检查下一页按钮可用或不使用python
EN

Stack Overflow用户
提问于 2022-09-12 12:49:05
回答 2查看 66关注 0票数 1

我希望从页面中删除一些事件数据,然后进入下一页,然后再删除下一页的事件数据,直到下一页按钮不可用为止。问题是,一旦按钮不可用,如何在if..else条件下实现。

条件码

代码语言:javascript
复制
while True:
  for i in range(len(links)):
    scrapy()

  if #Write Condition to Check if Next page button is available : 
      driver.get('website_link_here')
      next_page= '//*[@class="pagination"]/span[7]/a'
      link = WebDriverWait(driver, timeout=160).until(lambda d: d.find_element(By.XPATH,next_page))
      driver.execute_script("arguments[0].click();", link)
      scrapy()
  else:
      break

driver.quit()

Scrapy()函数代码

代码语言:javascript
复制
def scrapy():
    selector = '.event-poster'
    event_name = '.col-md-12 h1'
    links = WebDriverWait(driver, timeout=500).until(lambda d: d.find_elements(By.CSS_SELECTOR,selector))
    links[i].click()
    name_e = WebDriverWait(driver, timeout=500).until(lambda d: d.find_element(By.CSS_SELECTOR,event_name))
    print(name_e.text)
    driver.back()

库和驱动程序

代码语言:javascript
复制
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from lib2to3.pgen2 import driver
from selenium import webdriver
from selenium.webdriver.common.by import By
#import time
#import csv
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
selector = '.event-poster'
driver.get('website_link_here')
links = WebDriverWait(driver, timeout=500).until(lambda d: d.find_elements(By.CSS_SELECTOR,selector))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-12 13:07:44

对不起,我在前面的代码中做了一些错误,但是现在2天后,我编辑和更改了一些逻辑,现在这段代码正在按您的要求工作。另外,如果您想了解这些代码是如何工作的,请在注释中告诉我,然后我也会在我的文章中添加这一点。

更新代码。也导入这个from selenium.common.exceptions import NoSuchElementException

代码语言:javascript
复制
i = 0
while True:
  for i in range(len(links)):
    scrapy()

  try:
    driver.find_element(By.CLASS_NAME,'next')
    i+=1
  except NoSuchElementException:
    break
  else:
    links = WebDriverWait(driver, timeout=500).until(lambda d: d.find_elements(By.CSS_SELECTOR,selector))
    driver.get(f'https://shoobs.com/find-events?page={i}')

可以使用此命令driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")向下滚动到页面。

这是您的完整更新代码。

代码语言:javascript
复制
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from lib2to3.pgen2 import driver
from selenium import webdriver
from selenium.webdriver.common.by import By
#import time
#import csv
from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import NoSuchElementException



driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
selector = '.event-poster'
driver.get('https://shoobs.com/find-events')
links = WebDriverWait(driver, timeout=500).until(lambda d: d.find_elements(By.CSS_SELECTOR,selector))

def scrapy():
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    selector = '.event-poster'
    event_name = '.col-md-12 h1'
    links = WebDriverWait(driver, timeout=500).until(lambda d: d.find_elements(By.CSS_SELECTOR,selector))
    links[i].click()
    name_e = WebDriverWait(driver, timeout=500).until(lambda d: d.find_element(By.CSS_SELECTOR,event_name))
    print(name_e.text)
    driver.back()

i = 0
while True:
  for i in range(len(links)):
    scrapy()

  try:
    driver.find_element(By.CLASS_NAME,'next')
    i+=1
  except NoSuchElementException:
    break
  else:
    links = WebDriverWait(driver, timeout=500).until(lambda d: d.find_elements(By.CSS_SELECTOR,selector))
    driver.get(f'https://shoobs.com/find-events?page={i}')

driver.quit()
票数 1
EN

Stack Overflow用户

发布于 2022-09-12 13:04:24

代码语言:javascript
复制
from selenium.common.exceptions import TimeoutException
    
try:
    nextpagebutton = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, buttonxpath)))
except TimeoutException:
    print("No button available")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73689565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档