【问题标题】:Alter beautifulSoup code to extract words更改 beautifulSoup 代码以提取单词
【发布时间】:2013-06-14 18:42:32
【问题描述】:

这是我在网上找到的一些代码,可以从网站获取价格(即小数)。我需要更改此代码,使其不返回小数,而是返回字符串。

from bs4 import BeautifulSoup 
import urllib, string, sys, urllib2, re, time 
start = time.time() 
# Find Bloomberg Brent Price 
rawBloomData = urllib2.urlopen("http://www.bloomberg.com/energy/").read() 
BloomSoup = BeautifulSoup(rawBloomData) 
brent = BloomSoup.findAll('tr')[14] 
BloomPrice = str(re.search(re.compile (r"\d+\.\d*"),str(brent.contents)).group())
print (BloomPrice)

这将返回原油布伦特价格。我需要抓住它的“价格”这个词。 当我从

更改代码行时
brent = BloomSoup.findAll('tr')[14]
      to
brent = BloomSoup.findAll('tr')[12]

它应该返回

'Price'

【问题讨论】:

  • 您的问题是什么?您希望它返回“价格”,但不是吗?它实际上返回了什么?
  • @DanielRenshaw 很抱歉让您感到困惑。我希望它返回实际的单词价格。如果你去bloomberg.com/energy你会看到在价格这个词下,有62.03、65034等实际价格。但我不想要价格,我想提取“价格”这个词本身。
  • 我想我明白了,但你说你是通过将索引从 14 更改为 12 来得到价格这个词的,那么问题是什么?
  • @DanielRenshaw 当我运行索引为 12 的代码时,它返回一个错误,因为代码只处理小数,而不是字符串

标签: python string web-scraping decimal beautifulsoup


【解决方案1】:

只是这一行还在寻找\d+\.\d*形式的十进制数:

BloomPrice = str(re.search(re.compile (r"\d+\.\d*"),str(brent.contents)).group())

更改您的代码,以便从brent 字符串中提取第三个单词。

【讨论】:

  • 这就是我遇到的麻烦。我不知道怎么做。
  • 这有点用,但不是真的。它比我所在的地方更远,非常感谢。
猜你喜欢
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 2019-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-25
相关资源
最近更新 更多