【问题标题】:Is it Possible to get an Element by Text and remove it using bs4?是否可以通过文本获取元素并使用 bs4 将其删除?
【发布时间】:2020-12-16 09:42:06
【问题描述】:

这是我正在抓取的网站:biharjobportal.com 详细信息页面有多个 <p 标签,但我专门寻找其中包含 biharjobportal.com

<p>बिहार में निकलने वाली सारी एडमिशन, रिजल्ट और नौकरी की जानकारी इस वेबसाइट पर प्रदान की जाएगी | इसलिए इस वेबसाइट पर आने के लिए हमें गूगल में&nbsp;<strong>biharjobportal.com</strong>&nbsp;टाइप करे |</p>

如您所见,它的文本biharjobportal.com 存在。我想知道是否可以使用biharjobportal.comdecompose() 找到标签。

这是我尝试过的:

getptags = entry_content.find_all('p')
if 'biharjobportal.com' in getptags:
    #decompose() code here
else:
    print('nothing to decompose')

entry_content 是根元素。上述代码的输出始终执行 else 部分,即使其中存在 biharjobportal.com。 请指导我。谢谢

【问题讨论】:

  • 帖子需要进一步澄清,您是要在汤中找到&lt;strong&gt; 标签,还是满足于decompose() 包含目标字符串的p 元素中的整个文本?无论如何,这里缺少的成分是手动循环内容并适当使用in tag.text,这只会提取标签下的字符串值
  • 如果找到文本,我会尝试删除整个

标签: python html beautifulsoup


【解决方案1】:

问题是您询问字符串是否在bs4.element.Tag 对象列表中。应用于列表的in 运算符只有在列表中的一个对象完全匹配时才会返回true。

缺少的部分是 1) 您需要遍历从 find_all 返回的列表中的每个 Tag 和 2) 在进行包含比较之前,您需要使用 text 属性。类似的东西

getptags = entry_content.find_all('p')
for tag in getptags:
    if 'biharjobportal.com' in tag.text:
        #decompose() code here
    else:
        print('nothing to decompose')

【讨论】:

  • 好的,我正在努力让你知道。它不会干扰 p 标签内的其他文本吗?我的意思是还有其他词。它会找到完全匹配的吗?
  • 如果 tag.text 字符串在 p 标签内包含的文本中的任何位置包含目标字符串“biharjobportal.com”,则编写的 if 语句将评估为 True。如果你只想要一个完全匹配的工作,你可以做类似if 'biharjobportal.com' == tag.text: 的事情
  • 感谢您的帮助。会尽快让你知道
猜你喜欢
  • 2011-07-11
  • 1970-01-01
  • 2012-03-02
  • 2013-08-13
  • 1970-01-01
  • 2014-03-02
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多