如何利用URL锚点抓取网页指定子版块中的表格?
利用URL锚点精准抓取指定子版块的表格
当然可以,你完全可以借助URL中的锚点信息定位到目标子版块,再抓取其中的表格,避免手动计数索引的麻烦(毕竟页面结构变化会导致索引失效)。
实现思路
URL中的#Strikeforce_Challengers:_Britt_vs._Sayers锚点,对应页面中章节标题元素的id属性。我们可以通过CSS选择器定位到该标题,再选中它之后同层级的目标表格,精准锁定子版块内的内容。
改进后的代码
import requests from bs4 import BeautifulSoup import pandas as pd wikiurl = 'https://en.wikipedia.org/wiki/2011_in_Strikeforce#Strikeforce_Challengers:_Britt_vs._Sayers' # 从URL中提取锚点部分 anchor = wikiurl.split('#')[1] response = requests.get(wikiurl) soup = BeautifulSoup(response.text, 'html.parser') # 使用CSS选择器:选中锚点标题之后的所有class为toccolours的表格 target_tables = soup.select(f'#{anchor} ~ table.toccolours') # 读取第一个目标表格(如果存在) if target_tables: df = pd.read_html(str(target_tables[0]))[0] print(df.head()) else: print("未找到目标子版块内的表格")
关键说明
#{anchor} ~ table.toccolours是核心CSS选择器:#{anchor}定位到锚点对应的章节标题元素~是通用兄弟选择器,会选中该标题之后所有同层级的、class为toccolours的表格
- 这种方式不受页面其他表格数量变化的影响,比手动计数索引更稳定
内容的提问来源于stack exchange,提问作者HansDieter88
相关产品推荐
相关产品推荐

