Python爬虫入门——利用bs4库对HTML页面信息进行遍历读取

内容整理自中国大学MOOC——北京理工大学-蒿天-基于bs4库的HTML页面遍历方法

我们使用如下链接作为实验对象

https://python123.io/ws/demo.html

页面信息如下

利用requests库爬取出网页的HTML完整代码

1 import requests
2 r = requests.get("http://python123.io/ws/demo.html")
3 demo = r.text
4 print(demo)

网页内容如下

熟悉HTML页面架构的都知道,HTML页面中有两大类标签,<head>和<body>,这两类标签在当前HTML信息中都有展现。

然后我们就可以根据HTML的格式架构,产生三种遍历HTML标签的方法:从HTML根标签向子标签的向下遍历,从子标签向根标签的向上遍历,同级标签间的平行遍历。

1.下行遍历

1 import requests
2 from bs4 import BeautifulSoup
3 r = requests.get("http://python123.io/ws/demo.html")
4 demo = r.text
5 soup = BeautifulSoup(demo,"html.parser")
6 print(soup.head)  #获取HTML网页的head标签部分

首先我们获取HTML中head部分的信息

然后我们利用contents属性,取当前head中所有子标签的信息

print(soup.head.contents)

内容如下

当前head标签中仅有一组<title></title>标签,<title>标签内容被放入列表中

contents会将当前部分的所有标签存入列表(返回结果为一个列表形式)

同理,<body>标签中的全部内容也可用contents进行获取

print(soup.body.contents)

应该注意到,不是只有被标签标记的内容才被视为子标签信息,像当前<body>中的‘\n‘等内容同样被视为子标签节点。

验证统计的当前<body>标签内子标签节点的个数

print(len(soup.body.contents))

结果为5

(通过观察也不难发现,body.contents这个list中,list(0),list(2),list(4)均为换行符,list(1),list(3)分别为一个<p>)

读取body.contents列表中第2个元素也不难

print(soup.body.contents[1])

用.children属性迭代遍历<body>标签下的各子节点

for child in soup.body.children:
    print(child)

2.上行遍历

利用.parent属性遍历节点的父亲标签

利用.parents属性遍历节点的所有先辈标签,返回迭代类型

print(soup.title.parent)

<title>的父辈节点是<head>标签

print(soup.html.parent)

<html>作为一级标签,它的父辈节点就是它本身

而soup的父辈节点为空

一次性完成当前页面上行遍历

 1 import requests
 2 from bs4 import BeautifulSoup
 3 r = requests.get("http://python123.io/ws/demo.html")
 4 demo = r.text
 5 soup = BeautifulSoup(demo,"html.parser")
 6 for parent in soup.a.parents:
 7     if parent is None:
 8         print(parent)
 9     else:
10         print(parent.name)

3.平行遍历

.next_sibling  返回按照HTML文本顺序的下一个平行节点

.previous_sibling  返回按照HTML文本顺序的上一个平行节点

.next_siblings  迭代返回HTML文本顺序的后续所有平行节点

.previous_siblings  迭代返回返回HTML文本顺序的先前所有平行节点

所有平行遍历必须发生自同一个父节点下

比如<head>与<body>下的不同标签不能通过平行节点进行跨越遍历

单次遍历

print(soup.a.next_sibling)

平行遍历获得的下一个节点未必一定是标签类型

迭代遍历

for siblilng in soup.a.next_siblings:
    print(siblilng)

原文地址:https://www.cnblogs.com/fcbyoung/p/12291258.html

时间: 2024-11-05 04:52:29

Python爬虫入门——利用bs4库对HTML页面信息进行遍历读取的相关文章

Python爬虫入门之Urllib库的高级用法

1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意如下,比如知乎,点登录之后,我们会发现登陆之后界面都变化了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次性就加载完成的,实质上是执行了好多次请求,一般是首先请求HTML文件,然后加载JS,CSS 等等,经过多次

Python爬虫入门 | 4 爬取豆瓣TOP250图书信息

先来看看页面长啥样的:https://book.douban.com/top250 我们将要爬取哪些信息:书名.链接.评分.一句话评价-- 1. 爬取单个信息 我们先来尝试爬取书名,利用之前的套路,还是先复制书名的xpath: 得到第一本书<追风筝的人>的书名xpath如下: //*[@id="content"]/div/div[1]/div/table[1]/tbody/tr/td[2]/div[1]/a 得到xpath,我们就可以按照之前的方法来尝试一下: 返回的竟然是

Python爬虫入门之三urllib库的基本使用

前言 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地.在Python中有很多库可以用来抓取网页,我们先学习urllib. 注:此博客开发环境为python3 urlopen 我们先来段代码: # urllib_urlopen.py # 导入urllib.request import urllib.request # 向指定的url发送请求,并返回服务器响应的类文件对象 response = urllib.request.urlopen("http://www.bai

python爬虫入门request 常用库介绍

什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫. 其实通俗的讲就是通过程序去获取web页面上自己想要的数据,也就是自动抓取数据. 你可以爬去妹子的图片,爬取自己想看看的视频..等等你想要爬取的数据,只要你能通过浏览器访问的数据都可以通过爬虫获取 爬虫的本质 模拟浏览器打开网页,获取网页中我们想要的那部分数据 浏览器打开网页的过程

转 Python爬虫入门四之Urllib库的高级用法

静觅 » Python爬虫入门四之Urllib库的高级用法 1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意如下,比如知乎,点登录之后,我们会发现登陆之后界面都变化了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次性就加载完成的,实质上是执行了好多次请求,一般

Python 爬虫入门(二)——爬取妹子图

Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob/master/%E7%88%AC%E8%99%AB%E9%9B%86%E5%90%88/meizitu.py 公众号:[智能制造专栏].欢迎关注,分享智能制造与编程那些事. 爬虫成果 当你运行代码后,文件夹就会越来越多,如果爬完的话会有2000多个文件夹,20000多张图片.不过会很耗时间,可以在

Python 爬虫入门之爬取妹子图

Python 爬虫入门之爬取妹子图 来源:李英杰  链接: https://segmentfault.com/a/1190000015798452 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob/master/%E7%88%AC%E8%99%AB%E9%9B%86%E5%90%88/meizitu.py 爬虫成果 当你运行代码后,文件夹就会越来越多,如果爬完的话会有2

Python爬虫入门六之Cookie的使用

大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我们可以利用Urllib2库保存我们登录的Cookie,然后再抓取其他页面就达到目的了. 在此之前呢,我们必须先介绍一个opener的概念. 1.Opener 当你获取一个

Python爬虫入门一之综述

首先爬虫是什么? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 根据我的经验,要学习Python爬虫,我们要学习的共有以下几点: Python基础知识 Python中urllib和urllib2库的用法 Python正则表达式 Python爬虫框架Scrapy Python爬虫更高级的功能 1.Python基础学习 首先,我们要用Python写爬虫,肯定要了解Python的基础吧,万丈高楼平地起,