我正在用
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
怎么样
print (soup.select('div.map-address')[0].get_text().strip())
请记住,
select
会返回给您一个列表。这就是为什么在打印它时会看到它周围的 [],也是为什么当您尝试读取 text
属性时会收到错误(您要求的是列表的 text
属性)。
因此,如果您获取第零个元素并对其调用
get_text
,它将得到您想要的东西。我添加了 strip
来删除周围的空白。
不漂亮,但有用。
你可以简单地使用这个,
>>> 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)
我解决了:
if not soup.select('div.map-address'):
print ("No Address")
else:
print (hotel_page_soup.select('div.map-address')[0].text)
请问我迷路了,这个美丽的汤库还是scrapy?