当前位置: 首页 > 面试题库 >

使用BeautifulSoup在HTML中搜索和替换

管和志
2023-03-14
问题内容

我想使用BeautfulSoup搜索并替换<\a><\a><br>。我知道如何打开,urllib2然后解析以提取所有<a>标签。我想做的是搜索结束标记,并用结束标记加上中断将其替换。任何帮助,不胜感激。

编辑

我认为这将类似于:

soup.findAll('a').

在文档中,有一个:

find(text="ahh").replaceWith('Hooray')

因此,我认为这将遵循以下原则:

soup.findAll(tag = '</a>').replaceWith(tag = '</a><br>')

但这不起作用,并且python help()不能提供太多帮助


问题答案:

这将<br>在每个<a>...</a>元素的末尾插入一个标签:

from BeautifulSoup import BeautifulSoup, Tag

# ....

soup = BeautifulSoup(data)
for a in soup.findAll('a'):
    a.parent.insert(a.parent.index(a)+1, Tag(soup, 'br'))

您不能使用,soup.findAll(tag = '</a>')因为BeautifulSoup不会单独对end标签进行操作-它们被视为同一元素的一部分。

如果要按照注释中的要求将<a>元素放入元素<p>,则可以使用以下命令:

for a in soup.findAll('a'):
    p = Tag(soup, 'p') #create a P element
    a.replaceWith(p)   #Put it where the A element is
    p.insert(0, a)     #put the A element inside the P (between <p> and </p>)

同样,您不必分别创建<p>和,</p>因为它们是同一事物的一部分。



 类似资料:
  • 问题内容: 我正在使用BeautifulSoup在特定页面上寻找用户输入的字符串。例如,我想查看字符串“ Python”是否位于页面上:http : //python.org 当我使用时: find_string返回 但是当我使用: find_string返回预期 这两个语句之间有什么区别,使得当要搜索的单词实例不止一个时,第二条语句可以工作 问题答案: 以下行正在寻找 确切的 Navigable

  • 问题内容: 我正在尝试从“关键统计信息”页面中获取有关Yahoo中的代码的信息(因为Pandas库中不支持此功能)。 AAPL示例: 编辑:谢谢安迪! 问题:这正在打印一个空数组。如何更改退货? 问题答案: 好吧,返回的列表为空的原因是因为该数据是通过单独的调用生成的,仅通过向该URL发送请求就无法完成。如果浏览Chrome / Firefox上的“网络”标签并按XHR进行过滤,则通过检查每个网络

  • 按下 / 键,编辑器底部会出现 / 符号,接着输入字符串,便可以进行搜索 / 向下搜索 ? 向上搜索 n 搜索下一个 N 搜索上一个 :s/源字符串/目标字符串 将源字符串替换为目标字符串 :s/源字符串/目标字符串/g 替换当前行中所有符合条件的字符串 :行号1,行号2s/源字符串/目标字符串/g 在指定行中进行替换 :%s/源字符串/目标字符串/g 全文替换

  • 问题内容: 诚然,对于SQL命令,我是一个菜鸟。黑客在我的一个WordPress网站上的每个帖子和页面的末尾插入了一个脚本标签,我试图在“ wp_posts”表中进行查找和替换,但是当我运行“模拟查询。这是我所拥有的: 无论我在第一组“查找”引号中添加了什么内容,即使是像“ hcifx”一样简单的东西,而不是所显示的整个脚本标签,我都会收到错误消息。有什么想法我要去哪里吗? 问题答案: 原来,该错

  • Sublime Text 提供两种主要搜索方式: 单文件搜索 多文件搜索 两种方式都支持正则表达式。 单文件搜索 搜索 键盘快捷键与搜索面板对应关系: 打开搜索面板 Ctrl + F 正则表达式 Alt + R 大小写匹配 Alt + C 精确匹配 Alt + W 下一个 Enter 上一个 Shift + Enter 所有 Alt + Enter 增量搜索 键盘快捷键与增量搜索面板对应关系: 打

  • 搜索和替换 其他常见的用途就是找到所有模式匹配的字符串并用不同的字符串来替换它们。sub() 方法提供一个替换值,可以是字符串或一个函数,和一个要被处理的字符串。 sub(replacement, string[, count = 0]) 返回的字符串是在字符串中用 RE 最左边不重复的匹配来替换。如果模式没有发现,字符将被没有改变地返回。 可选参数 count 是模式匹配后替换的最大次数;co

  • 有没有一个函数可以在字符串的特定索引处替换一个字符串内的一个字符串一次?示例: 结果输出将是“我的文本是我的文本,你的大文本”

  • 问题 你想在字符串中搜索和匹配指定的文本模式 解决方案 对于简单的字面模式,直接使用 str.replace() 方法即可,比如: >>> text = 'yeah, but no, but yeah, but no, but yeah' >>> text.replace('yeah', 'yep') 'yep, but no, but yep, but no, but yep' >>> 对于复杂