真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

爬蟲基礎(chǔ)篇-BeautifulSoup解析-創(chuàng)新互聯(lián)

安裝:Installing Beautiful Soup4?
功能:BeautifulSoup用于從HTML和XML文件中提取數(shù)據(jù)

創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營銷,提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營銷、成都微信小程序、公眾號商城、等建站開發(fā),創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢。

常用場景:網(wǎng)頁爬取數(shù)據(jù)或文本資源后,對其進(jìn)行解析,獲取所需信息

以下詳細(xì)的介紹了beautifulsoup的基礎(chǔ)用法

1.結(jié)構(gòu)

BeautifulSoup 將html文檔轉(zhuǎn)換成樹形結(jié)構(gòu)對象,包含:
① tag(原h(huán)tml標(biāo)簽,有name和attribute屬性)?
② NavigableString(包裝tag中的字符串,通過string獲得字符串)
③ BeautifulSoup(表示一個文檔的全部內(nèi)容)

yourhtml = 'Extremely bold'

soup = BeautifulSoup(yourhtml, parse_method)    
# 獲取tag名稱
soup.tag.name    
# 還可改變soup對象的tag名稱b 
tag.name = "blockquote"   # 變?yōu)?blockquote class="boldest">Extremely bold

# 獲取tag的屬性
soup.tag.attrs    # {u'class': u'boldest'}

# 取得標(biāo)簽下的屬性class對應(yīng)的值(類似字典取值)
soup.tag["class"]  # u'boldest'
# 如果yourhtml有多值屬性,比如'

',class對應(yīng)的屬性為["body", "strikeout"]列表 # 獲取NavigableString類包裝的字符串 soup.tag.string # u'Extremely bold' # NavigableString類包裝的子符串不能編輯但可替換,tag.string.replace_with("No longer bold")

1.2 解析方法parse_method

爬蟲基礎(chǔ)篇-BeautifulSoup解析
?BeautifulSoup 為不同的解析器提供了相同的接口,但是如果不是標(biāo)準(zhǔn)格式的文檔結(jié)構(gòu),不同的解析器可能解析出不同結(jié)構(gòu)的樹型文檔(特別是XML解析器和HTML解析器),如果是標(biāo)準(zhǔn)格式文檔,則不同解析器只是解析速度不同,解析結(jié)果是一致的。

2. 子字節(jié)


# 直接獲取tag_name標(biāo)簽
soup.tag_name # 如soup.head, soup.title, soup.body.b

# 將tag_name的直接子字節(jié)以列表方式返回
soup.tag_name.contents # 字符沒有子節(jié)點所以沒有contents屬性

# 返回標(biāo)簽直接子節(jié)點的生成器,通過遍歷獲取每一個子節(jié)點內(nèi)容
soup.tag_name.children 

# 返回tag_name下所有子孫節(jié)點內(nèi)容的生成器
soup.tag_name.descendants 

soup.tag_name.string # 僅當(dāng)tag_name下只有一個字符串字節(jié)時,可返回子字節(jié),但若有多個子字節(jié),.string方法無法確定應(yīng)調(diào)用哪個子節(jié)點內(nèi)容,所以會返回None。所以應(yīng)通過.strings 來循環(huán)獲取,.stripped_strings 同時可以去除多余的空白內(nèi)容
for string in soup.stripped_strings:
 print(repr(string))
"""
u'Once upon a time there were three little sisters; and their names were'
u'Elsie'
 u','
u'Lacie'
"""

3.父節(jié)點

4.兄弟節(jié)點

第3、4點暫時不做詳細(xì)的討論

5.查找方法

5.1 find
查找符合條件的第一個內(nèi)容

5.1.1 參數(shù):

find( name # 查找標(biāo)簽
? ? ?,attrs # 查找標(biāo)簽屬性
? ? ?,recursive # 循環(huán)
? ? ?,text # 查找文本) ? ?找目標(biāo)首次出現(xiàn)的結(jié)果,返回一個beautfulsoup的標(biāo)簽對象

from bs4 import BeautifulSoup

with open('ecologicalpyramid.html', 'r') as ecological_pyramid:
 soup = BeautifulSoup(ecological_pyramid, 'html')
producer_string = soup.find(text = 'plants')    # 通過文本查找:plants
producer_entries = soup.find('ul')    # 標(biāo)簽查找
soup.find(id="link3")    # 通過id查找

5.1.2 通過class屬性查找

class屬性規(guī)定了元素的類名,但是查找時沒辦法將class當(dāng)做變量名,有以下查詢方法。以下find替換為find_all同樣可行

soup.find("span",{"class":{"green","red"}})
或
soup.find(name="span", attrs={"green" :"red"}
或
soup.find(class_="green")    # 注意class_有下劃線
或
soup.find("", {"class":"green"})

5.2 正則表達(dá)式

在沒有標(biāo)簽或者文本的情況下可使用正則查詢,比如查找郵箱

import re
from bs4 import BeautifulSoup

email_id_example = """
The below HTML has the information that has email ids.
abc@example.com
xyz@example.com
foo@example.com """ soup = BeautifulSoup(email_id_example) emailid_regexp = re.compile("\w+@\w+\.\w+")    # \w+ 匹配字母或數(shù)字或下劃線或漢字一次或多次 first_email_id = soup.find(text=emailid_regexp)  # 用正則表達(dá)式匹配文本 print(first_email_id) 輸出結(jié)果:abc@example.com

5.3 find_all
soup.find_all()查找符合條件的所有內(nèi)容
5.3.1 參數(shù):
find_all(name, attrs, recursive, text, limit)
limit參數(shù)可以限制得到的結(jié)果的數(shù)目(當(dāng)limit=1即和find()一樣的結(jié)果)
recursive=False表示只返回最近的子節(jié)點
text可傳遞指定尋找的字符串(可以是列表)

5.3.2 正則結(jié)合find_all()使用
目的:查找所有a標(biāo)簽,且字符串內(nèi)容包含關(guān)鍵字“Elsie”

for x in soup.find_all('a',href = re.compile('lacie')):
 print(x)

Lacie

5.3.3 get

一般href屬性對應(yīng)的值為鏈接
目的:1.獲取所有鏈接,保存在列表中;2.查詢所有a標(biāo)簽,輸出所有標(biāo)簽中的“字符串”內(nèi)容;3.查找所有含"id"屬性的tag

linklist = []
for x in soup.find_all('a'):
 link = x.get('href')    # 獲取屬性值的技巧
 if link:
 linklist.append(link)
"""
linklist:
http://example.com/elsie
http://example.com/lacie
http://example.com/tillie
""" 
 string = x.get_text()    # 獲取所有標(biāo)簽中所有的“字符串”內(nèi)容

 soup.find_all(id=True)    # 查找所有含"id"屬性的tag,無論id值是什么

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)頁題目:爬蟲基礎(chǔ)篇-BeautifulSoup解析-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://weahome.cn/article/isigh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部