Я использую селен (и, возможно, BS4) для очистки различных частей страниц результатов матчей (https://cuetracker.net/tournaments/gibraltar-open/2020/3542) для турниров за последние 4/5 лет, ссылки на которые я уже очистил .
Я пытаюсь придумать какой-нибудь надежный код, который обычно обрабатывает разные биты данных, приведенных в этих результатах сопоставления. Первоначально я пытался использовать частичный Xpath для очистки национальности каждого победившего игрока (LHS), но когда я пытаюсь получить значение атрибута, он возвращает список букв, а не национальностей в виде строки.
Я думаю, что BS4 может быть более подходящим для этого, так как формат html может измениться с добавлением данных судей в некоторых турнирах, но использование частичного Xpath кажется нормальным из того, что я мало знаю.
Как Могу ли я получить get_attribute, который даст мне значения в виде строк, а не отдельных букв?
Было бы проще завершить этот анализ с помощью BS4, а не Selenium?
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.select import Select
from bs4 import BeautifulSoup
import os
import re
import time
import pandas as pd
def wait_for_page_load():
timer = 15
start_time = time.time()
page_state = None
while page_state != 'complete':
time.sleep(0.5)
page_state = browser.execute_script('return document.readyState;')
if time.time() - start_time > timer:
raise Exception('Timeout :(')
chrome_path = r"C:\Users\George\Desktop\chromedriver.exe"
browser = webdriver.Chrome(chrome_path)
page_source = browser.page_source
browser.get("https://cuetracker.net/seasons")
links = browser.find_elements_by_css_selector("table.table.table-striped a")
hrefs=[]
for link in links:
hrefs.append(link.get_attribute("href"))
hrefs = hrefs[1:5]
hrefs2 = []
for href in hrefs:
browser.get(href)
wait_for_page_load()
links2 = browser.find_element_by_xpath('.//tr/td[2]/a')
for link in links2:
hrefs2.append((link.get_attribute("href")))
Player_1_Nationality = []
for href in hrefs2:
browser.get(href)
wait_for_page_load()
list_1_Nationality = browser.find_elements_by_xpath('.//div/div[2]/div[1]/b/img').get_attribute("alt")
for lis in list_1_Nationality:
Player_1_Nationality.append(lis)
['E',
'n',
'g',
'l',
'a',
'n',
'd',
'E',
'n',
'g',
'l',
'a',
'n',
'd',
'E',
'n',
'g',
'l',
'a',
'n',
'd',
'E',
'n',
'g',
'l',
'a',
'n',
'd',
'A',
'u',
's',
't',
'r',
'a',
'l',
'i',
'a',
'E',
'n',
'g',
'l',
'a',
...