Python3: BeautifulSoup4 не возвращает ожидаемое значение - PullRequest
0 голосов
/ 10 июня 2018

В настоящее время я пытаюсь удалить некоторые данные на веб-сайте, используя BS4 под python 3.6.4, но возвращаемое значение не соответствует ожидаемому:

import requests
from bs4 import BeautifulSoup

link = "https://www.lacentrale.fr/listing?makesModelsCommercialNames=FERRARI&sortBy=priceAsc"
request = requests.get(link)
page = request.content
soup = BeautifulSoup(page, "html5lib")

price = soup.find("div", {"class" : "fieldPrice sizeC"}).text

print(price)

Я должен получить «39 900 €»но код возвращает «47 880».

Примечание: даже без JS данные должны быть «39 900 €».

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Вместо page.content используйте page.text

Пример:

import requests
from bs4 import BeautifulSoup

link = "https://www.lacentrale.fr/listing?makesModelsCommercialNames=FERRARI&sortBy=priceAsc"
request = requests.get(link)
page = request.text
soup = BeautifulSoup(page, "html.parser")

price = soup.find("div", {"class" : "fieldPrice sizeC"}).text

print(price)
  • .text, автоматически декодировать контент с сервера
0 голосов
/ 10 июня 2018

На этой странице указано неправильное объявление кодировки, поэтому BeautifulSoup сообщают, что использовать неправильную кодировку.Вы можете принудительно использовать правильную кодировку следующим образом:

import requests
from bs4 import BeautifulSoup

link = "https://www.lacentrale.fr/listing?makesModelsCommercialNames=FERRARI&sortBy=priceAsc"
request = requests.get(link)
page = request.content
soup = BeautifulSoup(page.decode('utf-8','ignore'), "html5lib")

price = soup.find("div", {"class": "fieldPrice sizeC"}).text

print(price)

Выходы:

49 070 €
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...