【问题标题】:How to scrape table in specific subsection of a page?如何在页面的特定小节中抓取表格?
【发布时间】:2023-01-09 21:30:19
【问题描述】:

我正在尝试从包含多个表格的页面中抓取特定表格。我正在使用的网址包括表格所在的小节。

到目前为止,我尝试抓取所有表格并手动选择我需要的表格

wikiurl = 'https://en.wikipedia.org/wiki/2011_in_Strikeforce#Strikeforce_Challengers:_Britt_vs._Sayers'
response=requests.get(wikiurl)
soup = BeautifulSoup(response.text, 'html.parser')
table_class = "toccolours"
table = soup.find_all('table', table_class) # find all tables
# and pick right one 
df=pd.read_html(str(table[15]))

是否可以使用url#Strikeforce_Challengers:_Britt_vs._Sayers中的信息只抓取这部分的表格?

【问题讨论】:

    标签: python pandas dataframe web-scraping beautifulsoup


    【解决方案1】:

    你在路上 - 只需split() _join() 的 url 最后 n 个元素即可在 css selector:-soup-contains() 中使用它们:

    soup.select(f'h2:-soup-contains("{" ".join(url.split("_")[-3:])}") ~ .toccolours')
    

    例子

    import requests
    import pandas as pd
    from bs4 import BeautifulSoup
    url = 'https://en.wikipedia.org/wiki/2011_in_Strikeforce#Strikeforce_Challengers:_Britt_vs._Sayers'
    response = requests.get(url)
    soup = BeautifulSoup(response.content)
    
    table = soup.select(f'h2:-soup-contains("{" ".join(url.split("_")[-3:])}") ~ .toccolours')
    pd.read_html(str(table))[0]
    

    【讨论】:

      猜你喜欢
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多