【问题标题】:Parsing the DOM to extract data using Python使用 Python 解析 DOM 以提取数据
【发布时间】:2020-05-30 16:26:22
【问题描述】:

我有以下代码输出从<div> 标记中提取的数据。

s = BeautifulSoup(driver.page_source, "lxml")

best_price_tags = s.findAll('div', "flt-subhead1 gws-flights-results__price gws-flights-results__cheapest-price")
best_prices = []
for tag in best_price_tags:
    best_prices.append(tag.text.replace('€', '').strip())

变量best_price_tags的第一个元素包含以下内容:

<div class="flt-subhead1 gws-flights-results__price gws-flights-results__cheapest-price">      1 820 €   </div>

我希望上面的代码只输出值 1821。

上面的代码块有一个问题,它输出如下,考虑best_price_tags[0],'1\u202f821'的情况。

我尝试了以下方法,但不幸的是没有为我工作。

for tag in best_price_tags:
    best_prices.append(int(tag.text.replace('€', '').strip()))

寻找不使用 NLP 模块的自动化解决方案。

注意:我已经编辑了 &lt;div&gt; 标签的确切值。以前是&lt;div class='...'&gt;1 820 €&lt;/div&gt;,现在是&lt;div class='...'&gt; 1 820 € &lt;/div&gt;。

【问题讨论】:

标签: python parsing web-scraping beautifulsoup


【解决方案1】:

1 821 中的空间似乎是一个不间断的空间(导致输出中的 \u202f),也尝试对此进行替换。顺便说一句,我不知道这个字符在键盘上的位置,但是复制/粘贴应该就足够了

【讨论】:

  • 谢谢,@malmiteria。你的想法有效,但我必须在 for 循环之后写下所有这行代码,best_prices.append(tag.text.replace('\xa0€', '').replace('\u202f', '').strip()) 我认为这不是一种 Python 的方式,不是吗?
  • 嗯,我不确定,但我不知道该怎么做,那里有一个讨论stackoverflow.com/questions/6116978/…
  • 查看我更新的帖子,了解&lt;div&gt; 标签的确切值。
  • 仍然需要检查我们是否可以删除&lt;div&gt;标签所具有的值中的所有空格,然后它只剩下写int(tag.text.replace('€', ''))。
  • 是的,但不是数字之间的内容。它会删除 1820 € 左右的空格。
猜你喜欢
  • 1970-01-01
  • 2013-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多