Python 如何在html中获取链接的开始和结束位置

Python 如何在html中获取链接的开始和结束位置,python,html,regex,web-scraping,beautifulsoup,Python,Html,Regex,Web Scraping,Beautifulsoup,我有以下HTML格式的文本 b'<p><b>Anna Katharina Schaffelhuber</b> (* <a href="/wiki/26._Januar" title="26. Januar">26. Januar</a> <a href="/wiki/1993" title="1993">1993</a> in <a href="/wiki/Regensburg" title="Regens

我有以下HTML格式的文本

b'<p><b>Anna Katharina Schaffelhuber</b> (* <a href="/wiki/26._Januar" title="26. Januar">26. Januar</a> <a href="/wiki/1993" title="1993">1993</a> in <a href="/wiki/Regensburg" title="Regensburg">Regensburg</a>) ist eine deutsche <a href="/wiki/Monoskibob" title="Monoskibob">Monoskibobfahrerin</a>. Sie gehört seit April 2017 dem <a href="/wiki/Bundeszollverwaltung#Spitzensportf%C3%B6rderung" title="Bundeszollverwaltung">Zoll-Ski-Team</a> an.<sup class="reference" id="cite_ref-1"><a href="#cite_note-1">[3]</a></sup>\n</p>\n'
我曾想过解析原始HTML并删除所有
s、
s、
s等等。这看起来很烦人,我不确定是否能用这种方法捕获所有案例

我不能绕着一个平滑的方法转。如何为包含上述信息的每个超链接提取
开始
结束
链接

无法在BeautifulSoup中获得正确链接的可能重复

find()
find\u all()
方法不能解决我的问题。是的,
find_all()
将返回所有href的列表,但我需要此href的确切位置。我不能只使用列表中的元素,将其与文本进行匹配,然后以这种方式找到位置。它可以是任何简单的东西,比如“苹果”,可以在文本中多次出现。但是我想要一个正确的位置。我需要这个职位,因为我想把维基百科的所有内容组织成一个大型数据库。这些超链接是我稍后将使用的信息。他们将帮助我建立一个巨大的维基百科图表或网络


以防有人引用wiki转储:它们不包含链接和类别信息。此外,对我来说,处理这些垃圾堆似乎非常不舒服和不稳定,因为维护工作已在2000年代中期停止。

以下内容应该可以满足您的需要。我假设id只是一个增加1的唯一值,因为您没有指定任何键的含义

从bs4导入美化组
Anna Katharina Schaffelhuber(*in)在德国。您已于2017年4月去世。\n

\n' soup=BeautifulSoup(html,'html.parser') clean_text='Anna Katharina Schaffelhuber(*26.1993年1月在雷根斯堡)是德国的Monoskibobfahrein。请于2017年4月前往佐尔滑雪队 hrefs={href.text:href['href']表示汤中的href。如果href.get('title'),则查找所有('a')) 超链接=[] 对于枚举(hrefs.items())中的i,(href_text,href): start=clean_text.index(href_text) end=start+len(href_text)-1 超链接.append({'id':i, “名称”:href\u文本, 'link':href, “开始”:开始, “结束”:结束}) 打印(超链接)
可能重复的Don't think
find_all()
方法会有很大帮助,我需要确切的位置,
find_all()
只返回所有HREF的列表。它们可能在任何地方。*“超链接是信息”:因此您需要的是超链接值,而不是
html
页面中位置的索引。我需要信息(我在JSON中称之为
link
),但最重要的是我需要它的
start
end
。我的问题有那么模棱两可吗??我很困惑。“我的问题有那么模糊吗?”:是的,但为了让你满意,如果我提前两天研究这个问题,你会为我节省很多时间。。我用你的简单解决方案代替了我复杂的解决方案。谢谢你@LuckyZackary。
hyperlinks : [{    "id : 0,
                "name" : "26. Januar",
                "link" : "/wiki/26._Januar",
               "start" : 32,
               "end"   : 42 },
               { ... for all the links ... }]