Beautiful Soup 嵌套标签搜索

新手上路,请多包涵

我正在尝试编写一个 python 程序来计算网页上的单词。我使用 Beautiful Soup 4 来抓取页面,但我很难访问嵌套的 HTML 标签(例如: <p class="hello"> 里面 <div> )。

每次我尝试使用 page.findAll() (页面是包含整个页面的 Beautiful Soup 对象)方法查找此类标签时,它根本找不到任何东西,尽管有。有什么简单的方法或其他方法吗?

原文由 Asafwr 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 689
2 个回答

也许我猜你想做的是首先查看特定的 div 标签并搜索其中的所有 p 标签并计算它们或做任何你想做的事情。例如:

 soup = bs4.BeautifulSoup(content, 'html.parser')

# This will get the div
div_container = soup.find('div', class_='some_class')

# Then search in that div_container for all p tags with class "hello"
for ptag in div_container.find_all('p', class_='hello'):
    # prints the p tag content
    print(ptag.text)

希望有帮助

原文由 Mario Kirov 发布,翻译遵循 CC BY-SA 3.0 许可协议

试试这个:

 data = []
for nested_soup in soup.find_all('xyz'):
    data = data + nested_soup.find_all('abc')
# data holds all shit together

也许您可以将其转换为 lambda 并让它变得很酷,但这行得通。谢谢。

原文由 Maifee Ul Asad 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题