Очистить текст под тегом br под классом - PullRequest
0 голосов
/ 28 февраля 2019

Я пытался очистить адреса на этой странице: https://www.yellowpages.my/listing/results.php?keyword=boutique&where=selangor&screen=2

Мне трудно получить адрес под тегом br: введите описание изображения здесь

Что я пробовал

addresses = page_content.select(' .cbp-vm-address')[0]
address = addresses.get_text(' ', strip=True)
address = list(addresses.stripped_strings)

, который не дает мне все под класс

Я также пытался:

for br in page_content.findAll('br'):
   item = br.next_siblings
   item = list(item)
   print(item)

, который дает мне следующие результаты (фрагмент): [<br/>, <br/>, <br/>, <br/>, <br/>, '\n', <a href="/solutions">DigitalSolutions</a>, '\n', <a href="https://www.yellowpages.my/deal/results.php">Deals</a>, '\n', <a class="sign-up" href="https://www.yellowpages.my/profile/add.php">Sign Up</a>, '\n', <a class="sign-up" href="https://www.yellowpages.my/profile/login.php">Login</a>, '\n']

Как мне получить адрес?Относительно плохо знаком с этим.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Спасибо Охаду за быстрый ответ.Я просто хочу немного улучшить ответ ниже:

import requests
from bs4 import BeautifulSoup

raw = requests.get("https://www.yellowpages.my/listing/results.php?keyword=boutique&where=selangor&screen=2")
# raw = raw.replace("</br>", "") # try not to do this
soup = BeautifulSoup(raw.content, "lxml") # instead, change "html.parser" to "lxml"
addresses = [x.text.strip().split("\r\n")[-1].strip() for x in soup.find_all("div", class_="cbp-vm-address")]
0 голосов
/ 28 февраля 2019

Интересно.У меня действительно была проблема с этим, но я преодолел это, заменив все теги </br> в необработанной строке перед созданием объекта супа:

import requests
from bs4 import BeautifulSoup

raw = requests.get('https://www.yellowpages.my/listing/results.php?keyword=boutique&where=selangor&screen=2').text
raw = raw.replace("</br>", "")
soup = BeautifulSoup(raw, 'html.parser')
addresses = [x.text.strip().split("\r\n")[-1].strip() for x in soup.find_all("div", class_='cbp-vm-address')]

Тем не менее, я не чувствую, что этоЛучшее решение, так как он предварительно обрабатывает HTML перед загрузкой объекта супа, что не является для меня лучшей практикой.

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