Как я могу получить цену, название и ссылку из этого тега элемента?

Это теги экспортированных элементов искомого элемента в Craigslist.

Я использую BeautifulSoup и Python.

Как я могу получить 3 предмета, спрятанные ниже? 1.) КВАРТИРА С 2 СПАЛЬНЯМИ/1 ВАННОЙ С ФАНТАСТИЧЕСКОЙ ПЛАНИРОВКОЙ 2.) https://vancouver.craigslist.ca/rch/apa/d/2-bed-1-bath-condo-unit-with/6682563732.html 3 .) $1400

<li class="result-row" data-pid="6682563732" data-repost-of="6672289062">
<a class="result-image gallery" data-ids="1:00O0O_9WrVUmeuy5e,1:01010_8pEn0AcGEYo,1:00707_77eVL7Ade68,1:00e0e_dxzhja1yrDa,1:00k0k_2F9337g40vD,1:00O0O_eaVv31Gd4yw,1:00Z0Z_jccPvNndfg7,1:00505_eicoHPPOUcN,1:00U0U_7ligL02j3Mr,1:00u0u_3RnaxaZyl81,1:00S0S_ld5VSNTlzAJ,1:00U0U_dU2swTovLEJ,1:00O0O_d7PeITBKlmL,1:00x0x_3kcVk30PK30,1:00i0i_xhm6pORJuQ,1:00m0m_kIMUZ1PgCHb,1:00D0D_aTGfSGlJ1Ru,1:00v0v_8M4NXLErFqM,1:00c0c_jiTQuztqh9J,1:00Z0Z_3rlFLU7MCbq" href="https://vancouver.craigslist.ca/rch/apa/d/2-bed-1-bath-condo-unit-with/6682563732.html">
<span class="result-price">$1400</span>
</a>
<p class="result-info">
<span class="icon icon-star" role="button">
<span class="screen-reader-text">favorite this post</span>
</span>
<time class="result-date" datetime="2018-08-27 16:54" title="Mon 27 Aug 04:54:01 PM">Aug 27</time>
<a class="result-title hdrlnk" data-id="6682563732" href="https://vancouver.craigslist.ca/rch/apa/d/2-bed-1-bath-condo-unit-with/6682563732.html">2 BED/1 BATH CONDO UNIT WITH FANTASTIC LAYOUT</a>
<span class="result-meta">
<span class="result-price">$1400</span>
<span class="housing">
                    2br -
                    1430ft<sup>2</sup> -
                </span>
<span class="result-hood"> (RICHMOND)</span>
<span class="result-tags">
                    pic
                    <span class="maptag" data-pid="6682563732">map</span>
</span>
<span class="banish icon icon-trash" role="button">
<span class="screen-reader-text">hide this posting</span>
</span>
<span aria-hidden="true" class="unbanish icon icon-trash red" role="button"></span>
<a class="restore-link" href="#">
<span class="restore-narrow-text">restore</span>
<span class="restore-wide-text">restore this posting</span>
</a>
</span>
</p>
</li>


person Community    schedule 28.08.2018    source источник


Ответы (1)


Вы можете найти элементы с нужными именами классов:

import re
from bs4 import BeautifulSoup as soup
d = soup(content, 'html.parser')
[titles] = [[i.text, i['href']] for i in d.find_all('a', {'class':'result-title'})]
_, price= [i.text for i in d.find_all('span', {'class':'result-price'})]
print([*titles, price])

Выход:

['2 BED/1 BATH CONDO UNIT WITH FANTASTIC LAYOUT', 'https://vancouver.craigslist.ca/rch/apa/d/2-bed-1-bath-condo-unit-with/6682563732.html', '$1400']
person Ajax1234    schedule 28.08.2018
comment
Почему вы используете {'class':re.compile('result\-price')} вместо прямого {'class':'result-price'}? Есть ли причина, по которой я пропал? (Просто любопытно) - person abc; 28.08.2018
comment
@newbie Сначала я подумал, что ОП также хочет 1430ft, который также содержится в span, поэтому re.compile('result\-price|housing') будет короче, чем soup.find('span', {'class':'result-price'}) и soup.find('span', {'class':'housing'}). Я оставил его после двойной проверки постановки задачи на случай, если это конкретное значение понадобится позже. - person Ajax1234; 28.08.2018
comment
Ух ты! короткий ответ и быстрый ответ спасибо! Вот почему я не люблю Python из-за большого количества библиотек памяти и шорткодов. Как я могу изучить все это, если я новичок в Python? - person ; 28.08.2018
comment
У вас есть длинная версия? Что, если нам не нравится использовать метод «re». - person ; 28.08.2018
comment
@Ajax1234 Ajax1234 Я все еще не получаю данные в d.find_all('a', {'class': 'result-tile'}) это приводит к [] пустому - person ; 28.08.2018
comment
@user122289 user122289 Вы используете HTML-код, который вы разместили выше, или результаты вызова requests.get или urllib.urlopen.read? Если это последнее, то сайт, вероятно, является динамическим, и необходимо использовать другой метод парсинга. Однако при тестировании моего кода в ответе вместе с опубликованным HTML я получаю правильный вывод. - person Ajax1234; 28.08.2018
comment
d.find('a',{'class': 'result-title'}).text Я понял! Как я могу изучить все это, если я новичок в Python? Какую IDE вы используете в программировании на Python? в отличие от С#, он не показывает элемент, который я использую. Например, '.text' просто говорит NO COMPLETION - person ; 28.08.2018
comment
Давайте продолжим обсуждение в чате. - person Ajax1234; 28.08.2018