我不能用 Selenium 向前移动超过一页

分享于2022年07月17日 python selenium web-scraping 问答
【问题标题】:我不能用 Selenium 向前移动超过一页(I can't move forward more than one page with Selenium)
【发布时间】:2022-07-13 01:47:13
【问题描述】:

我正在尝试抓取一个转移标记网络,但我不能向前移动超过一页。这是网站的网址: https://www.transfermarkt.es/transfers/transfertagedetail/statistik/top/land_id_zu/0/land_id_ab/0/leihe//datum/2022-07-06

我的代码:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

urlb = 'https://www.transfermarkt.es/transfers/transfertagedetail/statistik/top/land_id_zu/0/land_id_ab/0/leihe//datum/2022-07-06'
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get(urlb)

# To accept Cookies
wait.until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//*[@id="sp_message_iframe_575430"]')))
wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="notice"]/div[3]/div[2]/button'))).click()
driver.switch_to.default_content()

while True:
    # button next ">"   
    wait.until(EC.presence_of_element_located((By.XPATH, "//a[@title='A la página siguiente']")))
    driver.find_element(By.XPATH, "//a[@title='A la página siguiente']").click() 

I can't move forward more than one page with Selenium

使用此代码我只能进入第二页。我希望能导航到决赛。

谢谢

  • 您是否使用下一步按钮转到下一页?
  • 也许在点击下一页按钮之前尝试 driver.switch_to.default_content() 因为它会在第一次点击后重新加载页面

【解决方案1】:

我可以建议使用带有自定义标头而不是 Selenium 的请求吗?

以下代码有效:

导入请求 从 bs4 导入 BeautifulSoup headers = {'User-Agent': '...'} 对于范围内的 x (1, 18): r = requests.get(f'https://www.transfermarkt.es/transfers/transfertagedetail/statistik/top/land_id_zu/0/land_id_ab/0/leihe//datum/2022-07-06/sort//page/ {x}',标题=标题) 汤 = BeautifulSoup(r.text, 'html.parser') ###找到你需要的数据,保存等

您可以轻松找到适用于不同浏览器的用户代理,例如: https://www.whatismybrowser.com/guides/the-latest-user-agent/chrome