Python 需要将行与以前的元素关联的表

Python 需要将行与以前的元素关联的表,python,selenium,web-scraping,beautifulsoup,Python,Selenium,Web Scraping,Beautifulsoup,我想从这个网站上删除表格: 我需要表格内的数据#移动#页边距#内容#整体 我尝试了这段代码,但有些游戏包含许多class=“odd”,我不知道如何将class=“odd”数据与class=“dark”数据关联起来 您可以使用下面的代码将所有数据存储在一个列表中,其中页面中的每一行都存储为列表 u = 'https://www.oddsportal.com/moving-margins/' driver = webdriver.Chrome(executable_path=r"C:\c

我想从这个网站上删除表格:

我需要表格内的数据#移动#页边距#内容#整体

我尝试了这段代码,但有些游戏包含许多class=“odd”,我不知道如何将class=“odd”数据与class=“dark”数据关联起来


您可以使用下面的代码将所有数据存储在一个列表中,其中页面中的每一行都存储为列表

u = 'https://www.oddsportal.com/moving-margins/'
driver = webdriver.Chrome(executable_path=r"C:\chromedriver.exe")
driver.maximize_window()
driver.get(u)
#Use Explicit time wait for fast execution
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#moving_margins_content_overall")))
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
table_data =  driver.find_elements_by_xpath("//div[@id='moving_margins_content_overall']//tr[@class='odd' or @class='dark']")
table =[]
# Creating a list of lists, where each list consist all data in each row either with class dark or odd
for data in table_data:
    row = []
    dark_row = data.find_elements_by_xpath((".//th//a"))
    for col in dark_row:
        row.append(col.text.replace("\n"," "))
    row.append(data.find_element_by_xpath(".//following-sibling::tr//th[@class='first2']").text)# Add data in first2 th
    odd_row = data.find_elements_by_xpath((".//following-sibling::tr[@class='odd']//td"))
    for col in odd_row:
        row.append(col.text.replace("\n", " "))
    row.append(odd_row[-1].find_element_by_xpath('.//a').get_attribute("title")) #Add bookmaker name
    table.append(row)
for t in table:
    print(t)
输出正如您可以看到的,橄榄球联盟比赛有两个赔率,所以该比赛的列表很长


我不确定您是否必须使用BS。如果您可以只使用python selenium绑定,有很多方法可以做到。不,使用BS不是强制性的,任何选项对我都可以。是的,这很好,但是如何将其存储在csv文件中?我的意思是,当一张黑名单上有一张以上的单数时,我不知道如何将单数单数(例如['Today 17:15'、'La Calzada W-Malaga W'、'-3.50 3.50'、'1.90'、'1.80'、'')与黑名单(例如['Handball'、'Spain'、'Copa de La Reina Women'])联系起来。谢谢,如果您不介意的话,还有两件事:1/tr中有另一个数据,没有类总是在tr=“odd”(contain th[@class=“first2”)之前出现,我们可以添加这个数据吗?2/我们可以添加收受赌注者名称(tr=“odd”上的最后数据)?是的,可以进行一些调整。我一定要看一看。但是,如果原始问题得到解决,您可以接受答案。:)请帮我添加这些数据,我肯定会接受答案,我已经把它评为有用的。。我提出了这个问题,也许可以帮助你现在检查一下。我已经在first2上添加了图书制造商名称和数据。谢谢,我来看看
u = 'https://www.oddsportal.com/moving-margins/'
driver = webdriver.Chrome(executable_path=r"C:\chromedriver.exe")
driver.maximize_window()
driver.get(u)
#Use Explicit time wait for fast execution
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#moving_margins_content_overall")))
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
table_data =  driver.find_elements_by_xpath("//div[@id='moving_margins_content_overall']//tr[@class='odd' or @class='dark']")
table =[]
# Creating a list of lists, where each list consist all data in each row either with class dark or odd
for data in table_data:
    row = []
    dark_row = data.find_elements_by_xpath((".//th//a"))
    for col in dark_row:
        row.append(col.text.replace("\n"," "))
    row.append(data.find_element_by_xpath(".//following-sibling::tr//th[@class='first2']").text)# Add data in first2 th
    odd_row = data.find_elements_by_xpath((".//following-sibling::tr[@class='odd']//td"))
    for col in odd_row:
        row.append(col.text.replace("\n", " "))
    row.append(odd_row[-1].find_element_by_xpath('.//a').get_attribute("title")) #Add bookmaker name
    table.append(row)
for t in table:
    print(t)