爬虫系列之BeautifulSoup

BeautifulSoup是处理爬虫的一个强大工具,在HTML页面中,是由各种标签构成的,BeautifulSoup的功能就是从标签下手的,它是解析、遍历、维护“标签树”的功能库。

BeautifulSoup的基本元素如下:

1. 基本格式如下:

1 from bs4 import BeautifulSoup
2 import requests
3
4 url = "http://python123.io/ws/demo.html"
5
6 r = requests.get(url)
7 demo = r.text
8 soup = BeautifulSoup(demo, "html.parser")  #将爬到的内容进行解析,demo就是内容,"html.parser"是解析器,按照html格式来进行解析
9 print(soup.prettify())  #输出解析得到的内容

解析效果如下:

2. 具体使用方法如下:

 1 >>> from bs4 import BeautifulSoup
 2 >>> import requests
 3 >>> url = "http://python123.io/ws/demo.html"
 4 >>> r = requests.get(url)
 5 >>> demo = r.text
 6 >>> soup = BeautifulSoup(demo, "html.parser")
 7 >>> soup.title  #显示标题
 8 <title>This is a python demo page</title>
 9 >>> soup.a  #显示a标签内容
10 <a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">Basic Python</a>
11 >>> soup.a.name  #显示a标签名字
12 ‘a‘
13 >>> soup.a.parent.name  #显示a标签父标签名字
14 ‘p‘
15 >>> soup.a.parent.parent.name  #显示a标签父标签的父标签名字
16 ‘body‘
17 >>> soup.a.attrs  #获得a标签的属性
18 {‘href‘: ‘http://www.icourse163.org/course/BIT-268001‘, ‘class‘: [‘py1‘], ‘id‘: ‘link1‘}
19 >>> soup.a.attrs["class"]  #因为是字典,所以这里用字典形式可以获得各个属性的值
20 [‘py1‘]
21 >>> type(soup.a.attrs)
22 <class ‘dict‘>   #字典类型
23 >>> soup.a.string  #获得a标签中的字符内容
24 ‘Basic Python‘
25 >>> soup   #soup内容如下
26 <html><head><title>This is a python demo page</title></head>
27 <body>
28 <p class="title"><b>The demo python introduces several python courses.</b></p>
29 <p class="course">Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:
30
31 <a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">Basic Python</a> and <a class="py2" href="http://www.icourse163.org/course/BIT-1001870001" id="link2">Advanced Python</a>.</p>
32 </body></html>
33 >>> 

3. 标签树的下行遍历

 1 >>> soup.head  #获取soup的head
 2 <head><title>This is a python demo page</title></head>
 3 >>> soup.head.contents  #获取head的儿子结点
 4 [<title>This is a python demo page</title>]
 5 >>> soup.body.contents  #获取body的儿子结点
 6 [‘\n‘, <p class="title"><b>The demo python introduces several python courses.</b></p>, ‘\n‘, <p
 7
 8 class="course">Python is a wonderful general-purpose programming language. You can learn Python from novice to
 9
10 professional by tracking the following courses:<a class="py1" href="http://www.icourse163.org/course/BIT-268001"
11
12 id="link1">Basic Python</a> and <a class="py2" href="http://www.icourse163.org/course/BIT-1001870001"
13
14 id="link2">Advanced Python</a>.</p>, ‘\n‘]
15 >>>
16 >>> len(soup.body.contents)  #获取儿子结点的个数
17 5
18 >>> 

4. 标签树的上行遍历

5. 标签树的平行遍历

平行遍历发生在同一个父节点下的各节点间。

原文地址:https://www.cnblogs.com/zyb993963526/p/9082433.html

时间: 2024-10-29 11:27:04

爬虫系列之BeautifulSoup的相关文章

Python爬虫系列之 xpath:html解析神器

通过前面的文章,我们已经知道了如何获取网页和下载文件,但是前面我们获取的网页都是未经处理的,冗余的信息太多,无法进行分析和利用 这一节我们就来学习怎么从网页中筛选自己需要的信息,顺便给大家推荐一个资源很全的python学习免非解答.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,这里有资深程序员分享以前学习心得,学习笔记,还有一线企业的工作经验,且给大家精心整理一份python零基础到项目实战的资料,每天给大家讲解python最新的技术,前景,学习需要留言的小细节 说到信息筛选我们立马就

python 爬虫系列教程方法总结及推荐

爬虫,是我学习的比较多的,也是比较了解的.打算写一个系列教程,网上搜罗一下,感觉别人写的已经很好了,我没必要重复造轮子了. 爬虫不过就是访问一个页面然后用一些匹配方式把自己需要的东西摘出来. 而访问页面经常用到的几个库,一是urllib和urllib2结合使用,二是requests的使用.第一种方法可以让你了解http协议的一些原理,对于初学者应该从这个入手,但是所谓显得麻烦,第二种requests比较方便,但是由于它是对其他库(httplib等)的高级封装,所以灵活性会差点,功能稍微差点,但一

java爬虫系列目录

1. java爬虫系列第一讲-爬虫入门(爬取动作片列表) 2. java爬虫系列第二讲-爬取最新动作电影<海王>迅雷下载地址 3. java爬虫系列第三讲-获取页面中绝对路径的各种方法 4. java爬虫系列第四讲-采集"极客时间"专栏文章.视频专辑 5. java爬虫系列第五讲-如何使用代理防止爬虫被屏蔽? 原文地址:https://www.cnblogs.com/itsoku123/p/10755548.html

Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲

在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天就来实战下,用他们来抓取酷狗音乐网上的 Top500排行榜音乐.接下来的代码中除了会用到HttpClient和Jsoup之外,还会用到log4j和ehcache,分别用来记录日志和实现缓存,如果看官对这两个不是很熟悉的话,请自行百度,现在网上的入门实例有很多,我就不专门记笔记了. 那为什么会想到爬取

Python 实用爬虫-04-使用 BeautifulSoup 去水印下载 CSDN 博客图片

Python 实用爬虫-04-使用 BeautifulSoup 去水印下载 CSDN 博客图片 其实没太大用,就是方便一些,因为现在各个平台之间的图片都不能共享,比如说在 CSDN 不能用简书的图片,在博客园不能用 CSDN 的图片. 当前想到的方案就是:先把 CSDN 上的图片都下载下来,再手动更新吧. 所以简单写了一个爬虫用来下载 CSDN 平台上的图片,用于在其他平台上更新图片时用 更多内容,请看代码注释 效果演示 Python 源代码 提示: 需要先下载 BeautifulSoup 哦,

Python爬虫:用BeautifulSoup进行NBA数据爬取

爬虫主要就是要过滤掉网页中无用的信息,抓取网页中有用的信息 一般的爬虫架构为: 在python爬虫之前先要对网页的结构知识有一定的了解,如网页的标签,网页的语言等知识,推荐去W3School: W3school链接进行了解 在进行爬虫之前还要有一些工具: 1.首先Python 的开发环境:这里我选择了python2.7,开发的IDE为了安装调试方便选择了用VS2013上的python插件,在VS上进行开发(python程序的调试与c的调试差不多较为熟悉): 2.网页源代码的查看工具:虽然每一个浏

Python爬虫系列之----Scrapy(七)使用IP代理池

一.手动更新IP池 1.在settings配置文件中新增IP池: IPPOOL=[ {"ipaddr":"61.129.70.131:8080"}, {"ipaddr":"61.152.81.193:9100"}, {"ipaddr":"120.204.85.29:3128"}, {"ipaddr":"219.228.126.86:8123"},

Python爬虫利器:BeautifulSoup库

Beautiful Soup parses anything you give it, and does the tree traversal stuff for you. BeautifulSoup库是解析.遍历.维护 "标签树" 的功能库(遍历,是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问).https://www.crummy.com/software/BeautifulSoup BeautifulSoup库我们常称之为bs4,导入该库为:from bs4 im

Python 爬虫系列:糗事百科最热段子

1.获取糗事百科url http://www.qiushibaike.com/hot/page/2/    末尾2指第2页 2.分析页面,找到段子部分的位置, 需要一点CSS和HTML的知识 3.编写代码 1 import urllib.request 2 from bs4 import BeautifulSoup 3 from urllib.request import URLError 4 from urllib.request import HTTPError 5 import time