如何用美汤分别加载table的每一列?

How to load each column of table separately with beautiful soup?

美汤如何只分别加载每一列?

from selenium import webdriver
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup as bs

url = "https://www.datasport.com/live/ranking/?racenr=21110&kat=96"
driver = webdriver.Chrome()
driver.get(url)
driver.implicitly_wait(10)
# goal: Click popup' away!!!!
driver.find_element(by=By.XPATH, value='/html/body/div[1]/div/a').click()
soup = bs(driver.page_source, "lxml")

A=[]

for i in soup.find_all('td'):
 A.append(i.get_text())

print(A)

driver.close()

当前输出是整个table。但我需要单独的所有列。

我的目标是为 table 的每一列创建一个列表。

第一列第一行的Xpath://*[@id="tableResult1"]/tbody/tr[1]/td[1]


第四列的 Xpath,第一行://*[@id="tableResult1"]/tbody/tr[1]/td[4]


第一列第三行的Xpath://*[@id="tableResult1"]/tbody/tr[3]/td[1]

我可以使用硒: driver.find_elements(by=By.XPATH, value=//*[@id="tableResult1"]/tbody/tr/td[1])) 加载第一列。我怎样才能对 bs 做同样的事情? 例如:soup.find_all('td'[1]) 不起作用。

要获取 table 的每一列的列表,您可以应用 stripped_strings 方法。

from selenium import webdriver
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup as bs

from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
data=[]
url = "https://www.datasport.com/live/ranking/?racenr=21110&kat=96"
driver.get(url)
driver.maximize_window()
driver.implicitly_wait(10)
# goal: Click popup' away!!!!
driver.find_element(By.XPATH, value='/html/body/div[1]/div/a').click()
soup = bs(driver.page_source, "lxml")
data=[]
for tr in soup.select('#tableResult1 tbody tr'):
    tr=list(tr.stripped_strings)
    data.append(tr[1])
print(data)

输出:

['Felfele Tesfaye', 'Matheka Bernard', 'Blackney Kevin', 'Wyndaele Romain', 'Oumoussa Zouhair', 'Fleury Julien', 'Allueva Miguel', 'Asfaw Tensai', 'Vieira Goncalves Paulo', 'Da Silva Miguel', 'Deletraz Arnaud', 'Boussague Lhoussein', 'Pinto Ricardo', 'Ané Jean-Pierre', 
'Mouzoun El Houssine', 'Planès Gaël', 'Marchal Dorian', 'Antoine Regis', 'Wyss Colin', 'Allan Harry', 'Thomet Vincent', 'Panozzo Piero', 'Gaudin Mikaël', 'Birchmeier Damien', 'Soleilhac Florent', 'Eicher Bernhard', 'Lachat Theo', 'Mackay Iain', 'Paccard Simon', 'Bernabeu Florian', 'Bosset Jérôme', 'Amarhoun Majid', 'Chaudoye Fabien', 'Romanens Jimmy', 'Bontaz Christophe', 'Marmillod Yves', 'Maffongelli Marco', 'Robas Gaspard', 'Matti Thibaut', 'Nuber Yoann', 'Afewerki Samuel', 'Zutter Jonathan', 'Rémy Cohann', 'Gebrezgabiher Aron', 'Tremblet Stephan', 'Ferrara Florent', 'Godbille Frédéric', 'Despréaux Julien', 'Casati Federico', 'Laurent Jerome', 'Gilliéron Christophe', 'Ferreira Paulo', 'Kopasz Arthur', 'Gabioud Romain', 'Chauvetet Paul', 'Wild Simon', 'Roubaty Quentin', 'Romelli Daniele', 'Charpigny Xavier', 'Hermand Dennis', 'Bouzon Daniel', 'Kowalski Adam', 'Secheyron Tom', 'Gottardo Alban', 'Faucheur Alexis', 'Pellegrino Vincenzo', 'Widmer Frédéric', 'Kellerhals Thomas', 'Duarte Micael', 'Reddy Akash Anant', 'Karlen Nathan', 'Marty Iwan', 'Ramer Roger', 'Simoncelli Michele', 'Albuquerque Bruno', 'Stübi Fabio', 'Niedergang Eric', 'Vaucher Gilles', 
'Mc Intyre Paul', 'Schwab Roman', 'Collaud Yohan', 'Kninech Bouchaib', 'Capt Léonard', 'Sauser Martin', 'Martin Frédéric', 'Gharbi Alex', 'Farrera-Soler Lluc', 'Bigler Nicolas', 'Simonet David', 'Socie Etienne', 'Garnier Noah', 'Laithier Dorian', 'Rothlisberger Bastien', 'Schindl David', 'Correvon Jari', 'Tschopp Benjamin', 'Duchet Guillaume', 'Baptiste Benoit', 'Soares Amilcar', 'Golay Simon']