解析HTML时获取一个空列表

时间:2019-11-16 13:52:17

标签: python beautifulsoup

我最近在解析网站时遇到问题。我需要从以下HTML中获取一段文本:

<span content="Москва, СВАО, р-н Ярославский, м. Ростокино, улица Проходчиков, 8" itemprop="name"></span>

我想在<span content=...>之后得到文字。

for a in self.find_all("span", {"itemprop": "name"}):
    a = a.text.split(',')
    print(a[2])

但是我得到一个空列表。

3 个答案:

答案 0 :(得分:2)

如果您要维护内容值,请使用 CSS 选择器和 content 属性。

from bs4 import BeautifulSoup
import requests
response=requests.get("https://www.cian.ru/kupit-1-komnatnuyu-kvartiru/")
soup=BeautifulSoup(response.text,"html.parser")
for item in soup.select('span[itemprop="name"][content]'):
    print(item['content'])

输出

Москва, ЮВАО, р-н Некрасовка, м. Некрасовка, Люберецкие Поля мкр, 13-й кв-л, к16
Москва, ЮВАО, р-н Некрасовка, м. Некрасовка, улица Лавриненко, 5
Москва, ЮВАО, р-н Некрасовка, м. Некрасовка, Люберецкие Поля мкр, 12-й кв-л, Квартал Некрасовка ЖК, к9
Москва, ЮВАО, р-н Некрасовка, м. Некрасовка, улица Маресьева
Москва, ЗАО, р-н Раменки, м. Мичуринский проспект, улица Лобачевского, 118к2
Москва, ЗАО, р-н Филевский парк, м. Шелепиха, Береговой ЖК, к1
Москва, ЮВАО, р-н Некрасовка, м. Некрасовка, Люберецкие Поля мкр, 13-й кв-л, к16
Москва, ЮВАО, р-н Некрасовка, м. Некрасовка, Люберецкие Поля мкр, 13-й кв-л, к16
Москва, ЗАО, р-н Филевский парк, м. Фили, Багратионовский проезд
Москва, ЗАО, р-н Раменки, м. Раменки, Мичуринский проспект
Москва, ЗАО, р-н Раменки, м. Мичуринский проспект, улица Лобачевского, 120
Москва, ЗАО, р-н Раменки, м. Раменки, улица Лобачевского, 118к1
Москва, ЗАО, р-н Крылатское, м. Крылатское, Рублевское шоссе, 70к2
Москва, ЗАО, р-н Крылатское, м. Крылатское, Рублевское шоссе, 70к6
Москва, ЗАО, р-н Раменки, м. Раменки, улица Лобачевского, 118к2
Москва, ЗАО, р-н Раменки, м. Аминьевское шоссе, улица Лобачевского, 114
Москва, ЗАО, р-н Филевский парк, м. Фили, Багратионовский проезд
Москва, ЮВАО, р-н Некрасовка, улица Вертолетчиков, 13
Москва, ЮВАО, р-н Некрасовка, м. Некрасовка, улица Вертолетчиков, 13
Москва, ЦАО, р-н Басманный, м. Электрозаводская, улица Госпитальный Вал, 5С7
Москва, ЗАО, р-н Раменки, м. Раменки, Мичуринский проспект
Москва, ЮВАО, р-н Некрасовка, м. Некрасовка, Люберецкие Поля мкр, 12-й кв-л, Квартал Некрасовка ЖК, к9
Москва, ЗАО, р-н Раменки, м. Мичуринский проспект, улица Лобачевского, 120
Москва, ЗАО, р-н Филевский парк, м. Фили, Багратионовский проезд
Москва, ЮВАО, р-н Некрасовка, м. Некрасовка, улица Лавриненко, 5
Москва, ЮВАО, р-н Некрасовка, м. Некрасовка, улица Лавриненко, 5
Москва, ЗАО, р-н Филевский парк, м. Шелепиха, Береговой ЖК, к1
Москва, СЗАО, р-н Хорошево-Мневники, м. Хорошево, 3-я Хорошевская улица, 19А

答案 1 :(得分:1)

也许这种和平的代码可以帮助您:

a.contents[0]

a.content

答案 2 :(得分:1)

您需要通过以下方式从跨度中检索内容:

import requests
from bs4 import BeautifulSoup
URL = 'https://www.cian.ru/kupit-1-komnatnuyu-kvartiru/'
r = requests.get(URL)
soup = BeautifulSoup(r.content, 'html5lib')
found_class_with_content = 'c6e8ba5398--address-links--1tfGW'
divs = soup.find_all('div', class_=found_class_with_content)
for div in divs:
    content = div.find('span', {"itemprop": "name"})['content']
    print(content)