久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

爬蟲學(xué)習(xí)(十一)

 北方的白樺林 2020-05-04

ba4的介紹:

bs4是第三方提供的庫,,可以將網(wǎng)頁生成一個對象,這個網(wǎng)頁對象有一些函數(shù)和屬性,,可以快捷的獲取網(wǎng)頁中的內(nèi)容和標(biāo)簽

lxml的介紹

lxml是一個文件的解釋器,,python自帶的解釋器是:html.parser

 

import re

from bs4 import BeautifulSoup
# 把網(wǎng)頁生成對象的對象拿出來
soup = BeautifulSoup(open("test.html",encoding="utf8"),"lxml")
# __str__此方法作用:打印對象會把對應(yīng)的字符串打印出來
# print(soup)
# 打印出來的結(jié)果是網(wǎng)頁的標(biāo)簽的字符串


#方式一. 根據(jù)標(biāo)簽進行查找,只能知道第一個標(biāo)簽
ret = soup.a

print(ret)
# 輸出結(jié)果:是網(wǎng)頁中的第一個標(biāo)簽及其里邊內(nèi)容,返回的是一個標(biāo)簽對象
# 2.獲取屬性和內(nèi)容

print(soup.a.attrs)
# 獲取a標(biāo)簽中的屬性,,返回的是一個關(guān)于屬性和屬性值的字典,,可以根據(jù)鍵值形式拿取屬性值

print(soup.a["href"])
# 可以如此直接獲取屬性的值


print(soup.a.text)
print(soup.a.string)
print(soup.a.get_text())
# 可以獲取標(biāo)簽中的內(nèi)容
# 注意:如果標(biāo)簽中還有標(biāo)簽,怎獲取標(biāo)簽內(nèi)容是獲取所有標(biāo)簽中的內(nèi)容
print(soup.div.text.replace("\t","").replace("\n",""))
# 輸出內(nèi)容是:將制表符,,換行符替換為空字符串



# 方式二,,比第二種方式更加靈活,可以加(屬性限制)條件,找到指定的標(biāo)簽
# 返回的是一個a標(biāo)簽的對象
tag = soup.find("a",class_="mu")
print(tag)
# 輸出內(nèi)容為a標(biāo)簽對象,。
# 注意:再根據(jù)class類進行索引標(biāo)簽時,,要寫成class_形式,不能寫成class
# 原因是class在python代碼中是關(guān)鍵字,,檢索時防止代碼錯誤識別,!
tag1 = soup.find("a",class_= re.compile(r"^mu"))
print(tag1)
# 注意可以進行加正則表達式對標(biāo)簽進行篩選

print(soup.find_all("a") )
#同find()一樣拿取所有的a標(biāo)簽,返回的是一個含a標(biāo)簽對象的列表



# 方式三,,(重點)soup.select(),返回的是一個關(guān)于標(biāo)簽對象的列表
# 適用于css的樣式選擇器
tagre = soup.select(".mu")
# 使用選擇器進行標(biāo)簽的篩選
print("*"*50)
print(tagre)
# 獲取標(biāo)簽屬性的值
print(tagre[0]["href"])


# 適用選擇器種類
# 標(biāo)簽選擇器
# 屬性選擇器
# id選擇器
# class類選擇器
# 層級選擇器
# 偽類選擇器
# 組合選擇器

# 層級選擇器(重點)
# div p a 后邊的節(jié)點是前邊節(jié)點的子節(jié)點就可以
print(soup.select(".tang #nan"))

# div>p>span 后邊的節(jié)點是前邊節(jié)點的直接子節(jié)點就可以
print(soup.select(".tang>ul>li"))

#屬性選擇器(幾乎不用)
print(soup.select("a[class=mu]"))




# 彩蛋:方式二和方式三組合使用
# 如:
c_soup = BeautifulSoup(open("test.html",encoding="utf8"),"lxml")
tag1 = c_soup.find("div",class_="tang")
print("*"*50)
print(tag1.select(".tang a"))





 


                                    

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多