抓取 DIV 内的内容 - BeautifulSoup

问题描述 投票:0回答:4

我正在用

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
python css-selectors beautifulsoup
4个回答
2
投票

怎么样

print (soup.select('div.map-address')[0].get_text().strip())

请记住,

select
会返回给您一个列表。这就是为什么在打印它时会看到它周围的 [],也是为什么当您尝试读取
text
属性时会收到错误(您要求的是列表的
text
属性)。

因此,如果您获取第零个元素并对其调用

get_text
,它将得到您想要的东西。我添加了
strip
来删除周围的空白。

不漂亮,但有用。


2
投票

你可以简单地使用这个,

>>> for i in soup.select('div.map-address'):
    print(i.string)



   O'Riordan Street,               
   Mascot 2020 NSW Australia, 
   (Corner Robey Street)

通过 CSS 选择器 和列表理解。

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

2
投票

我解决了:

if not soup.select('div.map-address'):
    print ("No Address")
else:
    print (hotel_page_soup.select('div.map-address')[0].text)

0
投票

请问我迷路了,这个美丽的汤库还是scrapy?

© www.soinside.com 2019 - 2024. All rights reserved.