Selenium通过CSS选择器查找元素返回'str'对象不可调用



我正在尝试刮体育博彩页面。到目前为止,我可以打开一个页面并转到实时部分。然后,我尝试使用By.XPATH查找一个特定的匹配项,以找到一个包含球队名称的元素,这就是我遇到麻烦的地方。正在获取错误消息:"str"对象不可调用。这是我的代码:

from lib2to3.pgen2.driver import Driver
from urllib import request
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import pandas as pd
from selenium.webdriver.common.action_chains import ActionChains
from bs4 import BeautifulSoup
import requests
superbet_team1_name = 'Dubrava'
superbet_team2_name = 'Western United'

driver =   webdriver.Chrome('C:/Users/tmarkac/source/repos/chromedriver.exe')
page = driver.get('https://superbet.pl/zaklady-bukmacherskie/live')
driver.find_element(By.XPATH,'//*[@id="onetrust-accept-btn-handler"]').click()
time.sleep(3)
#soup = BeautifulSoup(driver.page_source,'lxml')
event = driver.find_element(By.XPATH("//button[@title = 'Dubrava']")) `# Dubrava team name is just an example, any team name can be used for solution.`

由于某种原因,最后一行代码不起作用。此外,如果有一种方法可以传递变量superbet_team1_name作为title属性的值,那就太好了。感谢所有的帮助。

更改此行

event = driver.find_element(By.XPATH("//button[@title='Dubrava']"))

到这个

event = driver.find_element(By.XPATH,"//button[@title='Dubrava']")

要作为变量传递,请使用pythonformat()函数

superbet_team1_name = 'Dubrava'
event = driver.find_element(By.XPATH,"//button[@title='{}']".format(superbet_team1_name ))
  1. 您可以制作一个关键字列表并注入url端点
  2. 驱动程序之后.page_source驱动程序将不起作用
  3. 在bs4中,解析元素coockie接受不是强制性的
  4. Dubrava目前未包含任何结果

示例:

import time
from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
webdriver_service = Service("./chromedriver") #Your chromedriver path
driver = webdriver.Chrome(service=webdriver_service)
# superbet_team1_name = 'Dubrava'
# superbet_team2_name = 'Western United'
team_names = ['Dubrava','Western United']
for team_name in team_names:
#url ='https://superbet.pl/wyszukaj?query=dubrava'
u =f'https://superbet.pl/wyszukaj?query={team_name}'
driver.get(u)
driver.maximize_window()
time.sleep(10)
soup = BeautifulSoup(driver.page_source,"lxml")
v= soup.select_one('.event-row__layout')
v = v.get_text(' ',strip=True) if v else None
print(v)

输出:

16.10 12:00 Western United Sydney FC 2848 Mecz 1 2.75 2.75 X 3.40 3.40 2 2.60 2.60 +96

最新更新