我希望从页面中删除一些事件数据,然后进入下一页,然后再删除下一页的事件数据,直到下一页按钮不可用为止。问题是,一旦按钮不可用,如何在if..else条件下实现。
条件码
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()函数代码
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()库和驱动程序
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))发布于 2022-09-12 13:07:44
对不起,我在前面的代码中做了一些错误,但是现在2天后,我编辑和更改了一些逻辑,现在这段代码正在按您的要求工作。另外,如果您想了解这些代码是如何工作的,请在注释中告诉我,然后我也会在我的文章中添加这一点。
更新代码。也导入这个from selenium.common.exceptions import NoSuchElementException
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);")向下滚动到页面。
这是您的完整更新代码。
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()发布于 2022-09-12 13:04:24
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")https://stackoverflow.com/questions/73689565
复制相似问题