gpt4 book ai didi

python - 如何在 Python 中使用 BeautifulSoup 查找链接和修改 Html

转载 作者:太空宇宙 更新时间:2023-11-04 11:04:07 27 4
gpt4 key购买 nike

从这样的 Html 输入开始:

<p>
<a href="http://www.foo.com">this if foo</a>
<a href="http://www.bar.com">this if bar</a>
</p>

使用 BeautifulSoup,我想更改此 Html:

<p>
<a href="http://www.foo.com">this if foo[1]</a>
<a href="http://www.bar.com">this if bar[2]</a>
</p>

将解析后的链接保存在字典中,结果如下:

links_dict = {"1":"http://www.foo.com","2":"http://www.bar.com"}

是否可以使用 BeautifulSoup 来做到这一点?任何有效的替代方案?

最佳答案

这在 Beautiful Soup 中应该很容易。

类似于:

from BeautifulSoup import BeautifulSoup
from BeautifulSoup import Tag

count = 1
links_dict = {}
soup = BeautifulSoup(text)
for link_tag in soup.findAll('a'):
  if link_tag['href'] and len(link_tag['href']) > 0:
    links_dict[count]  = link_tag['href']  
    newTag = Tag(soup, "a", link_tag.attrs)
    newTag.insert(0, ''.join([''.join(link_tag.contents), "[%s]" % str(count)]))
    link_tag.replaceWith(newTag)
count += 1

在您的文本上执行此操作的结果:

>>> soup
<p>
<a href="http://www.foo.com">this if foo[1]</a>
<a href="http://www.bar.com">this if bar[2]</a>
</p>

>>> links_dict
{1: u'http://www.foo.com', 2: u'http://www.bar.com'}

我可以预见这个解决方案的唯一问题是你的链接文本是否包含子标签;那么你不能做 ''.join(link_tag.contents);相反,您需要导航到最右边的文本元素。

关于python - 如何在 Python 中使用 BeautifulSoup 查找链接和修改 Html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2900373/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com