我最近在解析网站时遇到问题。我需要从以下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])
但是我得到一个空列表。
答案 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)