У меня проблема с написанием веб-сканера для извлечения курсов валют:
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
import re
url = "https://wechselkurse-euro.de/"
r = requests.get(url)
rates = []
status = r.status_code
if status != 200:
print("Something went wrong while parsing the website " + url)
temp = BeautifulSoup(r.text, "html.parser")
current_date = temp.select(".ecb")[0].text.strip().split(" ")[5]
#rates_array = temp.select(".kurz_kurz2.center", limit= 20).string
rates_array = temp.select(".kurz_kurz2.center", limit= 20)
#for i in rates_array:
# rate = rates_array[i].string
# rates.append(rate)
rates = list( map( lambda x: re.search(">\d{1}\.\d{4}",x), rates_array))
print(rates)
#rate_1EUR_to_USD =
#rate_1EUR_to_GBP =
Я пробовал несколько способов, которые закомментированы - все они не работают, и я не знаю почему. Особенно неработающая строка .string меня удивляет, так как похоже, что rate_array наследует всю различную информацию об объекте bs4, включая информацию о том, что есть тег td <td class="kurz_kurz2 center" title="Aktueller Wechselkurs am 3.4.2020">0.5554</td>
, где я просто хочу строку внутри тега (поэтому значение 0,5554 в приведенном выше примере). Это должно быть легко, но ничего не работает, что я делаю не так?
Регулярное выражение не должно быть проблемой, я проверял его на regExR.
Я пытался использовать функцию карты в качестве активной в данный момент, но не могу преобразовать объект карты в список, как я должен.
Строка select (). Возвращает пустой список и то же самое с использованием выражений relgular для поиска по строкам, которые я сохранил в rate_array, когда я пытаюсь использовать oldschool способ итерации по каждому элементу моей функции с помощью для l oop.
String as атрибут объекта bs4