2013-06-14 2 views
0

вот код, который я нашел онлайн, который будет получать цены (т. Е. Десятичные числа) с сайтов. Мне нужно изменить этот код, чтобы он не возвращал десятичную, а строку.Alter beautifulSoup код для извлечения слов

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' 
+0

В чем вопрос? Вы хотите, чтобы он вернулся «Цена», но это не так? Что это действительно возвращается? –

+0

@ DanielRenshaw Прошу прощения, если я вас смутил. Я хочу, чтобы он вернул фактическую цену слова. Если вы перейдете на сайт http://www.bloomberg.com/energy/, вы увидите, что по цене слова есть фактические цены, такие как 62.03, 65034 и т. Д. Но мне не нужны цены, я хочу извлечь слово «Цена». – user1681664

+0

Я думаю, что получил это, но вы говорите, что получаете цену слова, меняя индекс с 14 на 12, так что в чем проблема? –

ответ

1

Это просто, что эта линия все еще ищет десятичных чисел вида \d+\.\d*:

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

Изменение ваш код, чтобы вместо этого извлекать третье слово из строки brent.

+0

, с которыми я столкнулся. Я не знаю как. – user1681664

+0

попробуйте 'brent.findAll ('td')' – Lynn

+0

это вроде работает, но не совсем. Это больше, чем я был так благодарен. – user1681664

Смежные вопросы