【问题标题】:How do i validate and assign my output in a simple way如何以简单的方式验证和分配我的输出
【发布时间】:2020-09-12 12:50:48
【问题描述】:

有没有可能在python中做这样的事情:

我有一个 'span' 想要抓取。

我只是想简化我获取数据的方式,如果我将 bs4 实例转换为文本,如果它是 None,我会得到一个错误。总的来说,如果 python 有这样的功能就好了。 :-)

note = x.text for event.find('span', {'class': 'header-3'}) as x if not None else ''

提前谢谢你!

编辑:

到目前为止,我通过创建一个可以应用于所有 bs4 实例的函数解决了我的 bs4 问题:

get_text = lambda x: x.text.strip() if x is not None else ''
note = get_text(event.find('span', {'class': 'header-3'}))

但是很高兴知道是否有像我的第一个代码块中那样的好方法。

【问题讨论】:

标签: python beautifulsoup one-liner


【解决方案1】:

这是你要找的吗?

event = BeautifulSoup(response.text, 'html.parser')
note = event.findAll('span', {'class': 'header-3'})

【讨论】:

  • 抱歉,我的问题并不清楚。我没有使用列表。这是一个单一的实体
  • 您是否在问如何获取一个唯一的跨度与 class: header-3 的文本(如果存在)?一些示例数据和预期结果将有助于确定您需要什么。
  • 所以这是一个示例,只是为了展示一个工作示例,但我真正想问的是是否有一种方法可以在没有 lambda 函数的情况下完成我所做的事情。某种花哨的 python 功能或不同的想法让我少写一行:-) codeshare.io/5O1k3x
  • 我明白了。我认为 lambda 是最优雅和可读的方式。我可以想到其他几种可能性,但没有一种会导致少一行代码:)
猜你喜欢
  • 2017-11-26
  • 2015-10-18
  • 2019-04-07
  • 1970-01-01
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多