#python #beautifulsoup #python-requests
#python #beautifulsoup #python-запросы
Вопрос:
Я создаю программу очистки веб-страниц, чтобы получать информацию о настроениях розничной торговли с IG Markets.
Вывод, который я хотел бы отобразить в консоли, является:
"EUR/USD: 57% of clients accounts are short on this market".
Вывод, который я получаю прямо сейчас, это:
"EUR/USD: 57% of client accounts are short on this market The percentage of IG client
accounts with positions in this market that are currently long or short. Calculated
to the nearest 1%."
Как мне удалить этот текст:
"The percentage of IG client accounts with positions in this market that are
currently long or short. Calculated to the nearest 1%."
Спасибо.
Вот код:
import bs4, requests
def getIGsentiment(pairUrl):
res = requests.get(pairUrl)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, 'html.parser')
elems = soup.select('.price-ticket__sentiment')
return elems[0].get_text(" ", strip = True)
retail_positions = getIGsentiment('https://www.ig.com/us/forex/markets-forex/eur-usd')
print('EUR/USD: ' retail_positions)
Ответ №1:
Для этого вы можете использовать регулярное выражение (regex) :
>>> import re
>>> print('EUR/USD: ' re.match('^.*on this market',retail_positions).group())
EUR/USD: 57% of client accounts are short on this market
Вы выражаете шаблон поиска ( ^.*on this market
) и re.match()
вернет re.Match
объект, и вы можете получить совпадение с group()
функцией.
Этот шаблон поиска состоит из 3 частей :
^
сопоставьте начало строки.*
означает соответствие нулевому или более (*
) экземпляру любого символа (.
)on this market
буквально сопоставьте эту строку
Регулярные выражения широко используются и поддерживаются, но остерегайтесь некоторых вариантов, Python, похоже, не поддерживает [[:digit:]]
класс character…
Ответ №2:
Если ваша строка изменяется, но заглавные буквы нет, вы можете просто создать цикл for для просмотра 7-го верхнего символа и разделить строку. В данном случае это буква «T».
Что-то вроде этого:
phrase = "EUR/USD: 57 % of client accounts are short on this market The percentage of
IG client accounts with positions in this market that are currently long or short.
Calculated to the nearest 1 % ."
upperchars = []
for char in phrase:
if char.isupper():
upperchars.append(char)
final = phrase.split(upperchars[6])[0]
print(final)
Результатом будет:
EUR / USD: 57 % клиентских счетов не хватает на этом рынке