【问题标题】: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]