编程开发 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
移动开发 架构设计 编程语言 互联网 开发经验 Web前端 开发总结
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
  编程开发知识库 -> 互联网 -> python爬虫系列(六):强大的beautifulsoup -> 正文阅读
 

[互联网]python爬虫系列(六):强大的beautifulsoup[第1页]

(一)简介和安装
beautifulsoup 是一个可以从HTML或者XML文件中提取数据的python库。他能通过你喜欢的转换器实现文档的导航,查找的方式。
安装:在新版的Debain 或ubuntu直接通过–>apt-get install python-bs4
还可以pip insatall bs4
因为第三方lxml 比python标准库的HTML解析起来快的多所以我们选择安装使用lxml,安装方式跟bs4一样。
(二)beautifulSoup 的使用
首先,导入bs4库:from bs4 import BeautifulSoup.我们使用下面的HTML代码进行练习
html_str =

<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title" name="dromouse"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1"><!-- Elsie --></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>

我们就用上面的代码开始lol:

#<1>创建Beautifulsoup对象
soup = Beautifulsoup(html_str,'lxml',from_encoding="utf-8")
#<2>打开html文件
soup = Beautifulsoup(open('index.html'))
#格式化的输出soup 对象的内容
print(soup.prettify())
out :
<html>
 <head>
  <title>
   The Dormouse's story
  </title>
 </head>
 <body>
  <p class="title" name="dromouse">
   <b>
    The Dormouse's story
   </b>
  </p>
  <p class="story">
   Once upon a time there were three little sisters; and their names were
   <a class="sister" href="http://example.com/elsie" id="link1">
    <!-- Elsie -->
   </a>
   ,
   <a class="sister" href="http://example.com/lacie" id="link2">
    Lacie
   </a>
   and
   <a class="sister" href="http://example.com/tillie" id="link3">
    Tillie
   </a>
   ;
and they lived at the bottom of a well.
  </p>
  <p class="story">
   ...
  </p>
 </body>
</html>

四大对象种类: 1.tag:通俗的讲就是HTML中的一个个标签

<head><title>The Dormouse's story</title></head>
<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>
<p class="title" name="dromouse"><b>The Dormouse's story</b></p>

上面的title head a p 等html 标签加上里面的内容就是Tag
那么怎么获取呢?一起来看以下。
print(soup.title)
print(soup.head)
print(soup.a)
print(soup.p)
可以打印下类型print(type(soup.p))
–>
2.NavigableString
上面我们获取到了标签,但是里面的文字如何取出来呢?这就用到了我们的”.string”属性

print soup.p.string
# The Dormouse's story

print type(soup.p.string)
# In [13]: <class 'bs4.element.NavigableString'>

3.Beautifulsoup
BS对象表示一个文档的内容,大部分的情况,我们把他当作Tag对象。我们可以分别的获取他的类型,名称,以及属性。

print type(soup.name)
# <type 'unicode'>

print soup.name 
# [document]

print soup.attrs # 文档本身的属性为空
# {}

4.Comment
comment 对象是一个特殊类型的NavigableString对象,其输出的内容不包括注释符号

print soup.a
# <a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>

print soup.a.string
# Elsie 

print type(soup.a.string)
# <class 'bs4.element.Comment'>

搜索文档树 1.find_all(name,attrs,text,**kwargs) 1>.name参数

A.传字符串


soup.find_all('b')
# [<b>The Dormouse's story</b>]

print soup.find_all('a')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]


B.传正则表达式


import re
for tag in soup.find_all(re.compile("^b")):
    print(tag.name)
# body
# b


C.传列表
soup.find_all(['a','b'])

2)keyword参数

soup.find_all('id'='link2')

# 3)text参数

soup.find_all(text="Elsie")

CSS选择器
1.通过标签名查找
print(soup.select(‘a’))
2.通过类名查找
print(soup.select(‘.sister’))
3.通过id名查找
print(soup.select(‘#link1’))
4.组合查找

#######组合查找即和写class文件一样,标签名与类名,id名进行组合原理一样。
print(soup.select('p #link1'))

5.属性查找
print(soup.select(‘a[class=’sister’]’))
6.获取内容

soup = BeautifulSoup(html_str,'lxml')
print(type(soup.select('title')))
print(soup.select('title')[0].get_text())
for title in soup.select('title'):
print('title.get_text()')

阅读全文
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报
标签: 爬虫 / 本文已收录于以下专栏:

发表评论
HTML/XML objective-c Delphi Ruby PHP C# C++ JavaScript Visual Basic Python Java CSS SQL 其它
相关文章推荐
python爬虫系列(2)—— requests和BeautifulSoup库的基本用法
本文主要介绍python爬虫的两大利器:requests和BeautifulSoup库的基本用法。
dnxbjyj 2017-04-20 08:14 1094 Python爬虫包 BeautifulSoup 学习(六) 递归抓取
之前的代码都是对单个静态页面进行抓取,这是人为简化的例子。爬虫的主要目的就是为了沿着网络抓取需要的内容。它们的本质是一种递归的过程。它们首先需要获得网页的内容,然后分析页面内容并找到另一个URL,然后...
u013007900 2016-12-25 11:09 1533 Python系列之六_BeautifulSoup
Python系列之六_BeautifulSoup
hanhf 2017-03-17 10:39 207 Python从零开始写爬虫(二)BeautifulSoup库使用
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库, BeautifulSoup在解析的时候是依赖于解析器的,它除了支持Python标准库中的HTML解析器,还支...
u011436666 2017-07-01 10:16 68 Python 网页爬虫-BeautifulSoup库的学习
由于项目的需要,需要检索到NCBI网页中相应字段。。。相应内容后期补充中 从网页中抽取出所需要的信息:         包括标题,作者,摘要,Keywrods, Mesh Terms等等信息   ...
win1611 2014-01-11 15:24 1522 Python爬虫urllib笔记(四)之使用BeautifulSoup爬取百度贴吧
BeautifulSoup-第三方分析网页内容库--替换正则表达式(有官方中文文档可查看) 提取百度贴吧网页中的楼主发的图片 # -*- coding:utf-8 - # # # Beau...
q383700092 2016-09-01 17:51 385 python多线程多队列(BeautifulSoup网络爬虫)
程序大概内容如下: 程序中设置两个队列分别为queue负责存放网址,out_queue负责存放网页的源代码。 ThreadUrl线程负责将队列queue中网址的源代码urlopen,存放到out_...
djd1234567 2015-04-27 23:22 2139 Python爬虫包 BeautifulSoup 学习(四) bs基本对象与函数
四大对象种类BeautifulSoup将复杂HTML文档转换成一个复杂的树形结构。如图所示每个节点都是Python对象,我们只用根据节点进行查询就可以了,因为解析工作交给了框架本身。所有对象可以归纳为...
u013007900 2016-12-24 17:33 2183 Python3.7 爬虫(三)使用 Urllib2 与 BeautifulSoup4 爬取网易云音乐歌单
版权声明:本文为 wintersmilesb101 -(个人独立博客– http://wintersmilesb101.online 欢迎访问)博主原创文章,未经博主允许不得转载。 废话在前面的的博客...
qq_21265915 2017-04-09 20:04 1572 python爬虫爬取斗图网BeautifulSoup
# encoding:utf-8 import requests # 使用requests获取网页编码 from bs4 import BeautifulSoup # 使用bs4中的beautifu...
qq_39248703 2017-06-29 16:16 72
little_monkey1223 +关注
原创 6 粉丝 喜欢 0 码云  
他的最新文章 更多文章
python爬虫系列(七):XPath的使用 python爬虫系列(六):强大的beautifulsoup python爬虫系列(五):多线程实例 python爬虫系列(四):请求伪装的做法
编辑推荐 最热专栏 史上最简单的 MySQL 教程 区块链开发技术分享 死磕Java ARKit开发 从高考到程序员 python爬虫系列(2)—— requests和BeautifulSoup库的基本用法 Python爬虫包 BeautifulSoup 学习(六) 递归抓取 Python系列之六_BeautifulSoup Python从零开始写爬虫(二)BeautifulSoup库使用 Python 网页爬虫-BeautifulSoup库的学习
在线课程

自然语言处理在“天猫精灵”的实践应用
讲师:姜飞俊

蚂蜂窝大数据平台架构及Druid引擎实践
讲师:汪木铃
目录
喜欢 取消喜欢 收藏 评论 分享
  互联网 最新文章
Stanford 英文词性标注(Part-of-speech)缩
基于窗口的实时统计
求解矩阵最短路径问题
SSL握手通信详解及linux下c/c++ SSL Socket
关于服务器上(Docker中)运行Java程序时区
python爬虫系列(六):强大的beautifulsou
[计算机网络笔记]第四部分——网络层 选路算
11.28 北京,念腾讯暑假,不思则惘吧!
web安全之
滑块验证码识别 java版本
上一篇文章           查看所有文章
加:2017-09-28 16:13:45  更:2017-09-28 16:14:10 
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年8日历
2018-8-18 16:50:56
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程开发知识库