提问人:Paul Corcoran 提问时间:11/24/2022 最后编辑:ProphetPaul Corcoran 更新时间:11/24/2022 访问量:81
单击页面上的选项卡以降低硒以抓取
clicking a tab on a page to alow selenium to scrape
问:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep
from datetime import datetime
import pandas as pd
import warnings
import os
warnings.filterwarnings('ignore')
url = 'https://www.fifa.com/fifaplus/en/match-centre/match/17/255711/285063/400128082?country=IE&wtw-filter=ALL'
option = Options()
option.headless = True
driver = webdriver.Chrome("C:/Users/paulc/Documents/Medium Football/chromedriver.exe",options=option)
# Scraping the data
HomeTeam = driver.find_element(By.XPATH, "/html/body/div[1]/main/div/div[1]/div/section/div[1]/div[1]/div[2]/div[3]/div/div[1]/div/div/div[1]/div[1]/p").text
AwayTeam = driver.find_element(By.XPATH, "/html/body/div[1]/main/div/div[1]/div/section/div[1]/div[1]/div[2]/div[3]/div/div[1]/div/div/div[3]/div[2]").text
Result = driver.find_element(By.XPATH, "/html/body/div[1]/main/div/div[1]/div/section/div[1]/div[1]/div[2]/div[3]/div/div[1]/div/div/div[2]").text
elem = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, “/html/body/div 1/main/div/div[3]/div/div1/div/div[4]”))) elem.click()
嗨,大家好,我想抓取世界杯数据,我已经设法通过获取球队名称和比分轻松开始。游戏中的统计数据位于图像的统计选项卡中。因此,要开始抓取它们,我需要能够使用 selenium 单击它并使页面处于活动状态。
我是否遗漏了一些明显的东西,而这不能通过 xpath 完成?
帮助是值得赞赏的。
答:
1赞
Prophet
11/24/2022
#1
如果您想单击“LINE UP”选项卡,可以使用以下 XPath 完成: .要单击“STATS”选项卡,您可以使用此 XPath: .因此,Selenium代码行可以如下所示:"//div[text()='LINE UP']"
"//div[text()='STATS']"
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[text()='LINE UP']"))).click()
对于选项卡和LINE UP
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[text()='STATS']"))).click()
此外,您还需要改进定位器。
非常长的绝对 XPath 非常容易损坏。"STATS"
评论
0赞
Paul Corcoran
11/24/2022
谢谢。现在开始抓取统计页面:)
0赞
Paul Corcoran
11/24/2022
我遇到了一些明显的后续麻烦
0赞
Paul Corcoran
11/24/2022
element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, “//div[text()='STATS']”))) actions = ActionChains(driver) actions.move_to_element(element).click().perform()
0赞
Paul Corcoran
11/24/2022
似乎代码没有将我导航到选项卡,因为 driver.find_element(By.XPATH, “/html/body/div[1]/main/div/div[3]/div/div[2]/div/div/div[46]/div[1]/div[2]”).text 返回“FIFA World Cup”,它仅出现在概述页面上
1赞
Paul Corcoran
11/24/2022
啊,我有饼干要处理
评论
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//div[contains(text(),'STATS')]"))).click()