from bs4 import BeautifulSoup text = """ <ul id="navList" class="w1"> <li><a id="blog_nav_sitehome" class="menu" href="https://www.cnblogs.com/">博客园</a> </li> <li> <a id="blog_nav_myhome" class="menu" href="https://www.cnblogs.com/jswf/">首页</a> </li> <li> <a id="blog_nav_newpost" class="menu" href="https://i.cnblogs.com/EditPosts.aspx?opt=1">新随笔</a> </li> <li> <a id="blog_nav_contact" class="menu" href="https://msg.cnblogs.com/send/jswf">联系</a></li> <li> <a id="blog_nav_rss" class="menu" href="https://www.cnblogs.com/jswf/rss/">订阅</a> <!--<partial name="./Shared/_XmlLink.cshtml" model="Model" /></li>--></li> <li> <a id="blog_nav_admin" class="menu" href="https://i.cnblogs.com/">管理</a> </li> </ul> <ul> <li>1213123</li> </ul> """ soup = BeautifulSoup(text,"lxml") ul = soup.find_all("ul",class_="w1",id="navList",limit=2)[0] #找到所有的ul标签 且class 和 id 被指定了 且只取两个 得到列表后 获取列表第零个 #ul = soup.find_all("uls",attrs={"class":"w1","id":"navList"})[0] #找到所有的ul标签 且class 和 id 被指定了 得到列表后 获取列表第零个 print(ul) print(list(ul.strings)) #拿到ul标签下的所有文本包括回车换行符 print(list(ul.stripped_strings)) #拿到ul标签下的所有非空文本 aes = ul.find_all("a") for a in aes: href = a["href"] # 获取a标签的href属性 #href = a.attrs("href") #获取a标签的href属性 print(href)
额 还有一个ul.get_text()和ul.strings作用一样 (都是返回ul标签下的所有文本包括空格回车)
但 get_text()返回的是字符串格式 strings返回的是生成器格式