Удаление определенных тегов 'dd' с помощью BeautifulSoup и Python - PullRequest
0 голосов
/ 31 октября 2019

Я изучаю Beautifulsoup, и я столкнулся с одной проблемой. Это списание dd тегов в HTML. Посмотрите на картинку ниже, я хочу получить параметры, которые находятся в зоне красного цвета. Проблема в том, что я не знаю, как получить к ним доступ. Я пробовал это:

    kvadratura = float(nek_html.find('span', class_='d-inline-block mt-auto').text.split(' ')[0])
    jedinica_mere = nek_html.find('span', class_='d-inline-block mt-auto').text.split(' ')[1].strip()
...

enter image description here

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

https://www.nekretnine.rs/stambeni-objekti/stanovi/centar-zmaj-jovina-salonac-id1003/NkmUEzjEFo0/

https://www.nekretnine.rs/stambeni-objekti/stanovi/prodajemo-stan-milica-od-macve-mirijevo-46m2-nov/NkNruPymNHy/

Как я могу быть уверен, что я всегда выберу нужный параметр? После этого каждый параметр попадает в список, поэтому, если какой-то параметр уже существует, он должен добавить '' в список

1 Ответ

2 голосов
/ 31 октября 2019

В таких случаях это то, что вы можете сделать вместо использования индекса, так как последний может привести вас к неправильному дд. Когда вы переходите к следующему подходу, все, что вам нужно сделать, это заменить текст в :contains(''), чтобы получить их дд, как в Transakcija, Vrsta stana и т. Д.

import requests
from bs4 import BeautifulSoup

url = "https://www.nekretnine.rs/stambeni-objekti/stanovi/centar-zmaj-jovina-salonac-id1003/NkmUEzjEFo0/"

res = requests.get(url)
soup = BeautifulSoup(res.text,"lxml")
Kategorija = soup.select_one(".base-inf .dl-horozontal:has(:contains('Kategorija:')) > dd")
Kategorija = Kategorija.get_text(strip=True) if Kategorija else ""
print(Kategorija)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...