我使用Python
BeautifulSoap
我必须抓取DIV
<div class="map-address">
O'Riordan Street,
Mascot 2020 NSW Australia,
(Corner Robey Street)
</div>
我有这段代码
print (soup.select('div.map-address'))
但是我得到了这个输出
[<div class="map-address">
O'Riordan Street,
Mascot 2020 NSW Australia,
(Corner Robey Street)
</div>]
我也试过
print (soup.select('div.map-address').text)
# Error ... no attribute named text
答案 0 :(得分:2)
你可以简单地使用它,
>>> for i in soup.select('div.map-address'):
print(i.string)
O'Riordan Street,
Mascot 2020 NSW Australia,
(Corner Robey Street)
通过CSS selectors和列表理解。
>>> print ([i.text for i in soup.select('div.map-address')][0])
通过soup.find
。我明确告诉我们类属性的价值是什么。
>>> print([i.string for i in soup.find('div', class_='map-address')][0])
O'Riordan Street,
Mascot 2020 NSW Australia,
(Corner Robey Street)
答案 1 :(得分:1)
怎么样?
print (soup.select('div.map-address')[0].get_text().strip())
请记住,select
会为您返回一个列表。这就是为什么你在打印时看到[]的原因,以及当你试图阅读text
属性时出现错误的原因(你要求text
列表的属性)。
因此,如果您使用第0个元素并在其上调用get_text
,它将为您提供所需的内容。我添加了strip
来删除周围的空格。
不漂亮,但有效。
答案 2 :(得分:0)
我解决了它:
if not soup.select('div.map-address'):
print ("No Address")
else:
print (hotel_page_soup.select('div.map-address')[0].text)