BeautifulSoup中查找元素 select() 和find()區別


  從html中查找元素,之前一般都用find(),查找符合條件的第一個,如下

f = open(file, 'r')  # 讀取文件內容
content = f.read()
soup= BeautifulSoup(content, 'html.parser', from_encoding='utf-8')
f.close()
tr = soup.find('tr', class_='b') # class是關鍵字,加"_ "

這樣就能查到,符合標簽為tr,class屬性值為b的條件的第一個元素

但是有次遇到一個問題,發現find()對於屬性的值不是精確匹配的,是模糊匹配。
如下圖:如果用soup.find('tr',class_='bar')實際定位到的是上面的,說明模糊匹配。find_all()也是模糊匹配

 

所以改用select()方法,

soup.select('td[class="bar"]')
#select()方法使用css定位元素,根據td標簽和class屬性值 精確定位,但是會查詢出來所有符合條件的元素,返回一個列表

如上圖,如果希望定位到需要“查找的”元素文本值
soup.select('td[class="bar"]')[0].text
 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM