# 簡單使用: # 說明:選擇器 jquery #導入from bs4 import BeautifulSoup #使用方式:可以將一個html文檔,轉化為一個對象, # 然后通過對象的方法或者屬性去查找指定對象 #轉化本地文件soup = BeautifulSoup(open("本地文件"),'lxml') #轉化網絡文件soup = BeautifulSoup(open("字符串或者字節類型"),'lxml') from bs4 import BeautifulSoup #生成對象 soup = BeautifulSoup(open("xx.html"),'lxml') #打印 這是一個對象 print(soup) #1、根據簽名查找 #可以查找這個對象的所有HTML標簽 print(soup.a)#<a href=""...> a標簽 print(soup.div) #div 標簽 #2、獲取標簽中的屬性 比如<a href=""...> 中有href和內容兩部分屬性 #<a href="http://www.baudu.com/meinv.jpg" title="" target="" >這里是內容</a> print(soup.a['href']) print(soup.a['title']) print(soup.a['target']) print(soup.a['attrs'])#找出所有屬性和值並返回一個屬性字典 #3、獲取內容 #<a href="http://www.baudu.com/meinv.jpg" title="" target="" >這里是內容</a> #以下三個都可以 print(soup.a.string) print(soup.a.text) print(soup.a.get_text()) #4、獲取一個div中的內容 如下 來區別以上三個方法的不同 # <div> # 甄姬 # <p>百里守約</p> # <p>李白</p> # 太乙真人 # </div> print(soup.a.string)#只能獲取標簽里面只有文本的情況 標簽里有別的標簽就獲取不到了 結果為None print(soup.a.text)#這個方法里面有標簽也可以獲取所有文本內容 print(soup.a.get_text())#這個方法里面有標簽也可以 和上一個效果一樣 #5、soup.find('a') print(soup.find("a"))#找到第一個符合要求的a print(soup.find("a"),title="限制")#通過第二個參數來限制 print(soup.find("a"),alt="限制") print(soup.find("a"),class_="限制")#class是關鍵字不能用,但是可以用class_ print(soup.find("a"),id="限制") #如果有重復的 需要精確查找 自己定義限定塊 再查找 代碼如下 #find方法不僅soup可以調用,普通div對象也能調用, # 會去指定的div里面查找符合要求的節點 div = soup.find('div',class_="第一個限制塊") print(div.find('a',class_="第二個限制條件")) #6、find_all() 和上面的find差不多 lt = soup.find_all('a') print(lt,len(lt))#會產生一個列表 ,里面會有幾個查找到的元素 div = soup.find_all('div',class_="第一個限制塊") print(div.find_all('a',class_="第二個限制條件")) print(div.find_all('a','b') print(div.find_all('a',limit=2)#找到所有取出前2個 #7、select 根據選擇器選擇指定的內容 #常見選擇器:標簽選擇器、類選擇器、id選擇器、層級選擇器、偽類選擇器、屬性選擇器、組合選擇器 #a 標簽a # .dudu 類選擇器 # #lala id選擇器 # 層級選擇器舉例 div .dudu #lala .meme .xixi 下面好多級 #建議層級選擇器寫法:div>p>a>.lala 這樣只能找下面一級 print(soup.select(".tang>ul>li>a")[2]) #返回的是列表 這個是取第三個 print(soup.select("#feng")[0].text|['href'])#取查找到的第一個 。text並只找文本 #select選擇器返回的永遠是列表 需要通過下標提取指定的對象,然后獲取屬性和節點