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

使用正则表达式查找标签的Beautiful Soup?

瞿博易
2023-03-14
问题内容

我真的很希望能够允许Beautiful Soup匹配任何标签列表,就像这样。我知道attr接受正则表达式,但是美丽的汤中有什么可以让您这样做的?

soup.findAll("(a|div)")

输出:

<a> ASDFS
<div> asdfasdf
<a> asdfsdf

我的目标是创建一个可以从站点抓取表格的刮板。有时标签的名称不一致,我希望能够输入标签列表来命名表的“数据”部分。


问题答案:

find_all()
是Beautiful Soup搜索API中最受欢迎的方法。

您可以传递各种过滤器。另外,传递列表以查找多个标签:

>>> soup.find_all(['a', 'div'])

范例

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<html><body><div>asdfasdf</div><p><a>foo</a></p></body></html>')
>>> soup.find_all(['a', 'div'])
[<div>asdfasdf</div>, <a>foo</a>]

或者,您可以使用正则表达式查找包含a或的标签div

>>> import re
>>> soup.find_all(re.compile("(a|div)"))


 类似资料:
  • 所以我使用一个供应商应用程序,它使用regex从我的站点中删除代码。我有一个完整的div,我想使用regex控件找到并删除它,但是当我尝试时,换行和div挡住了我的路。有人有想法吗?我正在努力。?但是就像我说的,用断线来思考,它会阻止它收集所有的东西。

  • 在这个问题的背景下,我想做以下修改: 查找: funcA(参数0,参数1,参数2,参数3); 替换: funcA可以有除param0之外的任意数量的参数。怎么做呢?为简单起见,忽略基本情况,即当传递给funcA的参数仅为param0时。 funcA是: 职能是: 编辑: 参数(param1,param2..)只是包含字母的字符串。

  • 问题内容: 我有这个HTML输入: 我想使用正则表达式删除HTML标记,以便输出为: 谁能建议使用正则表达式执行此操作? 问题答案: 您可以使用称为Jericho Html解析器的HTML解析器。 您可以从这里下载-http://jericho.htmlparser.net/docs/index.html Jericho HTML Parser是一个Java库,允许对HTML文档的各个部分(包括服

  • 问题内容: 因此,我对 正则表达式 完全 陌生 ,并且正在尝试使用Java 来查找输入字符串中的标点符号。我不知道会提前得到哪种标点符号,只是(1)!,?,。,…都是有效的标点符号,以及(2)“ <”和“>”表示特殊含义,并且不算作标点符号。该程序本身会伪随机地构建短语,我想在它经历随机过程之前先删除句子结尾处的标点符号。 我可以用任何标点符号匹配整个单词,但匹配器只为我提供该单词的索引。换一种说

  • 问题内容: 我正在尝试提取锚标记()的属性。到目前为止,我有这个表达: 适用于像 和(单引号) 但不适用于不带引号的字符串: 如何修改我的正则表达式,使其与不带引号的属性一起使用?还是有更好的方法来做到这一点? 更新: 谢谢您到目前为止的所有好评和建议。 我没有提到一件事:很遗憾,我必须修补/修改不是由我编写的代码。而且没有时间/金钱从头开始重写这些东西。 问题答案: 如果你有一个像 此正则表达式