python爬虫beautifulsoup4系列4-子节点

简介: 前言 很多时候我们无法直接定位到某个元素,我们可以先定位它的父元素,通过父元素来找子元素就比较容易   一、子节点 1.以博客园首页的摘要为例:这个tag为起点 2.那么div这个tag就是父节点 3."摘要: 前言 本篇详细。

前言

很多时候我们无法直接定位到某个元素,我们可以先定位它的父元素,通过父元素来找子元素就比较容易

 

一、子节点

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

也可以关注下我的个人公众号:

相关文章
|
14天前
|
数据采集 XML 数据处理
使用Python实现简单的Web爬虫
本文将介绍如何使用Python编写一个简单的Web爬虫,用于抓取网页内容并进行简单的数据处理。通过学习本文,读者将了解Web爬虫的基本原理和Python爬虫库的使用方法。
|
14小时前
|
数据采集 JSON API
【2024-简洁版】python爬虫 批量查询自己所有CSDN文章的质量分:方便快速上手修改代码
【2024-简洁版】python爬虫 批量查询自己所有CSDN文章的质量分:方便快速上手修改代码
7 0
|
3天前
|
数据采集 Web App开发 Java
Python 爬虫:Spring Boot 反爬虫的成功案例
Python 爬虫:Spring Boot 反爬虫的成功案例
|
4天前
|
数据采集 Python
使用Python实现简单的Web爬虫
本文将介绍如何使用Python编写一个简单的Web爬虫,用于抓取网页上的信息。通过分析目标网页的结构,利用Python中的requests和Beautiful Soup库,我们可以轻松地提取所需的数据,并将其保存到本地或进行进一步的分析和处理。无论是爬取新闻、股票数据,还是抓取图片等,本文都将为您提供一个简单而有效的解决方案。
|
5天前
|
数据采集 存储 XML
如何利用Python构建高效的Web爬虫
本文将介绍如何使用Python语言以及相关的库和工具,构建一个高效的Web爬虫。通过深入讨论爬虫的基本原理、常用的爬虫框架以及优化技巧,读者将能够了解如何编写可靠、高效的爬虫程序,实现数据的快速获取和处理。
|
11天前
|
数据采集 Web App开发 数据可视化
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
|
12天前
|
数据采集 存储 大数据
Python爬虫:数据获取与解析的艺术
本文介绍了Python爬虫在大数据时代的作用,重点讲解了Python爬虫基础、常用库及实战案例。Python因其简洁语法和丰富库支持成为爬虫开发的优选语言。文中提到了requests(发送HTTP请求)、BeautifulSoup(解析HTML)、Scrapy(爬虫框架)、Selenium(处理动态网页)和pandas(数据处理分析)等关键库。实战案例展示了如何爬取电商网站的商品信息,包括确定目标、发送请求、解析内容、存储数据、遍历多页及数据处理。最后,文章强调了遵守网站规则和尊重隐私的重要性。
25 2
|
16天前
|
数据采集 定位技术 Python
Python爬虫IP代理技巧,让你不再为IP封禁烦恼了! 
本文介绍了Python爬虫应对IP封禁的策略,包括使用代理IP隐藏真实IP、选择稳定且数量充足的代理IP服务商、建立代理IP池增加爬虫效率、设置合理抓取频率以及运用验证码识别技术。这些方法能提升爬虫的稳定性和效率,降低被封禁风险。
|
28天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
1月前
|
数据采集 数据挖掘 Python
使用Python构建简单的Web爬虫:实现网页内容抓取与分析
本文将介绍如何使用Python编写一个简单的Web爬虫,实现对特定网页内容的抓取与分析。通过学习本文,读者将了解到如何利用Python的requests和Beautiful Soup库来获取网页内容,并通过示例演示如何解析HTML结构,提取所需信息。此外,我们还将讨论一些常见的爬虫挑战以及如何避免被网站封禁的策略。