日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬虫beautifulsoup4系列4-子节点

發布時間:2025/7/14 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫beautifulsoup4系列4-子节点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

很多時候我們無法直接定位到某個元素,我們可以先定位它的父元素,通過父元素來找子元素就比較容易

?

一、子節點

1.以博客園首頁的摘要為例:<div?class="c_b_p_desc">這個tag為起點

2.那么div這個tag就是父節點

3."摘要:?前言?本篇詳細。。。"這個string就是上面div的子節點(string通常看成是一個tag的子節點)

4."<a?class="c_b_p_desc_readmore"?href="http://www.cnblogs.com/yoyoketang/p/6906558.html">閱讀全文</a>"這個也是div的子節點

?

二、.contents

1.tag對象contents可以獲取所有的子節點,返回的是list

2.len()函數統計子節點的個數

3.通過下標可以取出對應的子節點

1 # coding:utf-8 2 from bs4 import BeautifulSoup 3 import requests 4 5 r = requests.get("http://www.cnblogs.com/yoyoketang/") 6 # 請求首頁后獲取整個html界面 7 blog = r.content 8 # 用html.parser解析html 9 soup = BeautifulSoup(blog, "html.parser")
10 # find方法查找頁面上第一個屬性匹配的tag對象 11 tag_soup = soup.find(class_="c_b_p_desc")
12 # len函數獲取子節點的個數 13 print len(tag_soup.contents)
14 # 循環打印出子節點 15 for i in tag_soup.contents: 16 print i 17 18 # 通過下標取出第1個string子節點 19 print tag_soup.contents[0] 20 # 通過下標取出第2個a子節點 21 print tag_soup.contents[1]

?

三、.children

1.點children這個生成的是list對象,跟上面的點contents功能一樣

2.只是這里是list對象,就只能for循環讀出了,不能通過下標獲取

(一般上面那個contents用的比較多,可能children性能更快吧,我猜想的嘿嘿!)

?

四、.descendants

1.上面的contents只能獲取該元素的直接子節點,如果這個元素的子節點又有子節點(也就是孫節點了),這時候獲取所有的子孫節點就可以用.descendants方法

2.獲取div的子節點有兩個,子孫節點有三個,因為a標簽下還有個“閱讀全文”這個string子節點

1 # coding:utf-8 2 from bs4 import BeautifulSoup 3 import requests 4 5 r = requests.get("http://www.cnblogs.com/yoyoketang/") 6 # 請求首頁后獲取整個html界面 7 blog = r.content 8 # 用html.parser解析html 9 soup = BeautifulSoup(blog, "html.parser") 10 # find方法查找頁面上第一個屬性匹配的tag對象 11 tag_soup = soup.find(class_="c_b_p_desc") 12 13 # len函數獲取子節點的個數 14 print len(list(tag_soup.children)) 15 16 # 獲取子孫節點的個數 17 print len(list(tag_soup.descendants)) 18 19 for i in tag_soup.descendants: 20 print i

?

?

五、爬取博客首頁的標簽內容

1.博客左側的標簽并不是這個鏈接:http://www.cnblogs.com/yoyoketang/

2.通過抓包可以看到,這個url地址是:http://www.cnblogs.com/yoyoketang/mvc/blog/sidecolumn.aspx?blogApp=yoyoketang

2.可以先定位父元素:<div?class="catListTag">

?

六、參考代碼:

1 # coding:utf-8 2 from bs4 import BeautifulSoup 3 import requests 4 5 r = requests.get("http://www.cnblogs.com/yoyoketang/mvc/blog/sidecolumn.aspx?blogApp=yoyoketang") 6 # 請求首頁后獲取整個html界面 7 blog = r.content 8 # 用html.parser解析html 9 soup = BeautifulSoup(blog, "html.parser") 10 tag_soup = soup.find(class_="catListTag") 11 12 # print body.prettify() 13 14 ul_soup = tag_soup.find_all("a") 15 print ul_soup 16 for i in ul_soup: 17 print i.string

?

對python接口自動化有興趣的,可以加python接口自動化QQ群:226296743

也可以關注下我的個人公眾號:

轉載于:https://www.cnblogs.com/yoyoketang/p/6931209.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的python爬虫beautifulsoup4系列4-子节点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。