2013-11-27 36 views

回答

1

查找div標記,並使用text屬性在標記內獲取文本。

>>> from bs4 import BeautifulSoup 
>>> 
>>> html = ''' 
... <html> 
...  <body> 
...   <div id="price">$199.00</div> 
...  </body> 
... </html> 
... ''' 
>>> soup = BeautifulSoup(html) 
>>> soup.find('div', id='price').text 
u'$199.00' 
0

你是如此接近使它的工作。

(1)如何搜索和找到你感興趣的標籤:

讓我們來看看如何使用find_all功能:

find_all(self, name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs):...

name="div":name屬性將包含標籤名稱

attrs={"id":"price"}attrs字典誰包含屬性

recursive:一個標誌是否潛入其子女或不。

text:可以用正則表達式一起使用以搜索包含某些文本

limit標籤:就是選擇你要多少回limit=1使find_all一樣find

在標誌你的情況,這裏有一個命令列表來定位不同標誌的標籤:

>> # in case you have multiple interesting DIVs I am using find_all here 
>> html = '''<html><body><div id="price">$199.00</div><div id="price">$205.00</div></body></html>''' 
>> soup = BeautifulSoup(html) 
>> print soup.find_all(attrs={"id":"price"}) 
[<div id="price">$199.00</div>, <div id="price">$205.00</div>] 
>> # This is a bit funky but sometime using text is extremely helpful 
>> # because text is actually what human will see so it is more reliable 
>> import re 
>> tags = [text.parent for text in soup.find_all(text=re.compile('\$'))] 
>> print tags 
[<div id="price">$199.00</div>, <div id="price">$205.00</div>] 

有很多diffe租用方法來定位你的元素,你只需要問自己,什麼是定位元素的最可靠方法。

有關BS4的更多信息查找,click here

(2)如何獲得一個標籤的文本:

tag.text將返回Unicode和您可以通過使用tag.text.encode('utf-8') tag.string還將努力轉換爲字符串類型。

相關問題