python小白学习记录 BeautifulSoup4学习

 

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返回的是生成器格式






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")
#uls = soup.select("ul.w1")[0]
#通过css选择器 获取class属性为w1的ul标签列表的第零位
#uls = soup.select("ul#navList")[0]
#通过css选择器 获取id属性为navList的ul标签列表的第零位
#uls = soup.select("ul[class='w1']")[0]
#通过css选择器 获取class属性为w1的ul标签列表的第零位
uls = soup.select("ul[id='navList']")[0]
#通过css选择器 获取id属性为navList的ul标签列表的第零位
#lis = soup.select("ul a")
#通过css选择器 获取ul下的所有a标签
#lis = soup.select("ul>li")
#通过css选择器 获取ul下的直接li标签
#lis = uls.contents
#以list形式返回uls下的所有标签
lis = uls.children
#以list_iterator形式返回uls下的所有标签
print(type(lis))

for li in lis:
    print(li)

 

posted @ 2020-02-11 11:36  jswf  阅读(178)  评论(0)    收藏  举报