Selenium Python3,如何点击一个div完全加载html?



我试图使用SeleniumBeautifulSoup从https://superbet.ro/pariuri-sportive/live提取一些信息。我为实时比赛创建了url,现在遍历它们以提取一些统计数据。但是,当我使用以下代码时,statistics选项卡没有加载:

def get_soup(url):
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=options)
driver.get(url)
time.sleep(3)

page = driver.execute_script('return document.body.innerHTML')
driver.quit()
soup = BeautifulSoup(page, 'html.parser')
print(soup)
return soup

所以我试图点击统计按钮来找到我需要的div,因为在我的脚本中获得的html是部分加载的,与chrome开发人员工具的原始html不同。

这是我得到的和我需要的之间的区别:

<div class="statistics__content">
<div class="sa-sdk-v5">
<div class="sa-sdk-unknown-tab" eventdetails="[object Object]">

这是我需要的div

我不知道怎么点击Statistics,因为我没有任何按钮标签。

下面是标签

最后,我通过点击那个选项卡解决了这个问题。

我会说在这个过程中坚持使用Selenium。您需要:

  1. 使用selenium定位元素。在您的示例中,您需要获取所有匹配项,然后转到其相对路径以找到可以单击的框。我不认为它必须是按钮。
  2. 那么你可以这样写。
def wait_for_field(self, xpath, driver, interval=10):
try:
element = WebDriverWait(driver, interval).until(EC.presence_of_element_located((By.XPATH, xpath)))
except Exception as e:
raise CrawlerException(field + " failed, ", str(e))
return elemenT    
def click_on_match(self, page_browser):
try:
element_to_click= self.wait_for_field("**fill out here**", page_browser,
interval=5)
print("found match to click")
page_browser.execute_script("arguments[0].click()", element_to_click)
except:
pass'

试试这个:

import requests
url = "https://old.superbet.ro/rest/SBWeb.Models.Casino/getAllGames"
r = requests.get(url)
json_data = r.json()

相关内容

  • 没有找到相关文章

最新更新