【问题标题】:Python with bs4 finding element in <script>在 <script> 中使用 bs4 查找元素的 Python
【发布时间】:2018-11-06 14:33:43
【问题描述】:

我正在尝试使用 bs4 访问 html / xml 中的值,但真的找不到。这是我想要得到的一个例子:

<script>
  item1 = "a"
  item2 = "b"
</script>

我尝试使用此代码:

for item in html.find_all('script'):
  if 'item1' in item:
    print(item)

但它不起作用(什么都没有打印出来)...... 有人可以帮忙吗? 提前非常感谢你

【问题讨论】:

  • 您能否更具体地了解不起作用是什么意思?
  • 这里的spree 是什么?
  • 呃,抱歉,我编辑了一部分,但不是全部
  • 如果我这样运行它什么都不会打印
  • html.find_all('script') 将为您提供一个列表,其中包含文档中所有 &lt;script&gt; 标记的内容。我相信 BS4 会给你一个对象列表,而不是字符串 - 特别是,没有一个会完全等于字符串 'item1'。我相信您可以使用.get_text 方法找到实际的文本内容,然后根据需要搜索特定的子字符串。

标签: python html xml python-3.x beautifulsoup


【解决方案1】:

添加.text,它会打印每个script的内容。

from bs4 import BeautifulSoup

scripts = '''
<script>
  item1 = "a"
  item2 = "b"
</script>
'''

html = BeautifulSoup(scripts)

for item in html.find_all('script'):
  if 'item1' in item.text:
    print(item.text)

【讨论】:

  • 现在我收到此错误:“AttributeError: 'NavigableString' 对象没有属性 'text'”
  • 你确定吗?尝试我发布的整个脚本
  • 是的,我确定。我从请求的响应中获取 html,这就是问题所在
  • 将请求代码插入问题中,否则没有人可以帮助您。如果您不想这样做,请将此答案标记为解决方案,因为它可以满足您的需求。
猜你喜欢
  • 2021-03-29
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 2017-12-21
  • 2022-01-27
  • 1970-01-01
  • 2020-02-28
相关资源
最近更新 更多