使用過濾器,我有:獲得內層標籤文本而在BeautifulSoup
... html
<div id="price">$199.00</div>
... html
如何獲得$ 199.00的文本。使用
soup.findAll("div",id="price",text=True)
不起作用,因爲我從整個文檔中獲取所有innet文本。
使用過濾器,我有:獲得內層標籤文本而在BeautifulSoup
... html
<div id="price">$199.00</div>
... html
如何獲得$ 199.00的文本。使用
soup.findAll("div",id="price",text=True)
不起作用,因爲我從整個文檔中獲取所有innet文本。
查找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'
你是如此接近使它的工作。
(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
還將努力轉換爲字符串類型。