BeautifulSoup возвращает странное значение - PullRequest
0 голосов
/ 01 марта 2019

Вот мой код:

from bs4 import BeautifulSoup
import requests
import openpyxl



r = requests.get("https://www.hemnet.se/bostader? 
location_ids%5B%5D=18045&item_types%5B%5D=bostadsratt")



soup = BeautifulSoup(r.text, "html.parser")

for pris_kvd_rum in soup.find_all("div", class_="listing-card__attribute 
listing-card__attribute--primary"):


  pris = pris_kvd_rum.text

  lista = [pris]


  print(pris)
  print(lista)

Я хочу напечатать переменную pris для выдачи.Когда вы помещаете переменную pris в список, вы можете видеть, что цена имеет значение как цены, так и значения, например: 1 \ xa0450 \ xa0000 \ xa0kr.Это делает его таким, что я не могу обработать или преобразовать его в число в Excel.У кого-нибудь есть решение для этого?

1 Ответ

0 голосов
/ 01 марта 2019

Так что, если я правильно понимаю, что происходит, вам нужно декодировать строку и извлечь из нее только числовую часть, поэтому вам нужно будет установить unidecode библиотеки, а затем извлечь каждую цифру в строке, чтобы сформировать число

from bs4 import BeautifulSoup
import requests
import openpyxl
import locale
#regular expressions library
import re
#decoding library
import unidecode

r = requests.get("https://www.hemnet.se/bostader? location_ids%5B%5D=18045&item_types%5B%5D=bostadsratt")



soup = BeautifulSoup(r.text, "html.parser")

for pris_kvd_rum in soup.find_all("div", class_="listing-card__attribute listing-card__attribute--primary"):


  pris = pris_kvd_rum.text
  print(pris)


  pris = unidecode.unidecode(pris)
  if ',' in pris:
    pris = re.findall(r"\d*\,\d*", pris)
    pris = float(pris[0].replace(',','.'))
    print(pris)
  else:
    pris = re.findall(r"\d+.", pris)
    pris = [x.strip(' ') for x in pris]
    pris = int(''.join(map(str,pris)))
    print(pris)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...