在DIV内部刮取内容 - BeautifulSoup

时间:2014-11-08 09:26:26

标签: python css-selectors beautifulsoup

我使用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

3 个答案:

答案 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)