Python3爬虫学习之爬虫利器Beautiful Soup用法分析


Posted in Python onDecember 12, 2018

本文实例讲述了Python3爬虫学习之爬虫利器Beautiful Soup用法。分享给大家供大家参考,具体如下:

爬虫利器Beautiful Soup

前面一篇说到通过urllib.request模块可以将网页当作本地文件来读取,那么获得网页的html代码后,自然就是要将我们所需要的部分从杂乱的html代码中分离出来。既然要做数据的查找和提取,当然我们首先想到的应该是正则表达式的方式,而正则表达式书写的复杂我想大家都有体会,而且Python中的正则表达式和其他语言中的并没有太大区别,也就不赘述了,所以现在介绍Python中一种比较友好且易用的数据提取方式——Beautiful Soup

照例,先上官方文档
还有贴心的中文版

Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.

文档中的例子其实说的已经比较清楚了,那下面就以爬取简书首页文章的标题一段代码来演示一下:

先来看简书首页的源代码:

Python3爬虫学习之爬虫利器Beautiful Soup用法分析

可以发现简书首页文章的标题都是在<a/>标签中,并且class='title',所以,通过

find_all('a', 'title')

便可获得所有的文章标题,具体实现代码及结果如下:

# -*- coding:utf-8 -*-
from urllib import request
from bs4 import BeautifulSoup
url = r'http://www.jianshu.com'
# 模拟真实浏览器进行访问
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
page = request.Request(url, headers=headers)
page_info = request.urlopen(page).read()
page_info = page_info.decode('utf-8')
# 将获取到的内容转换成BeautifulSoup格式,并将html.parser作为解析器
soup = BeautifulSoup(page_info, 'html.parser') 
# 以格式化的形式打印html
# print(soup.prettify())
titles = soup.find_all('a', 'title') # 查找所有a标签中class='title'的语句
# 打印查找到的每一个a标签的string
for title in titles:
 print(title.string)

Python3爬虫学习之爬虫利器Beautiful Soup用法分析

PS:关于解析器

Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,下表列出了主要的解析器,以及它们的优缺点:

解析器 使用方法 优势 劣势
Python标准库 BeautifulSoup(markup, "html.parser") (1)Python的内置标准库 (2)执行速度适中 (3)文档容错能力强 Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
lxml HTML 解析器 BeautifulSoup(markup, "lxml") (1)速度快 (2)文档容错能力强 需要安装C语言库
lxml XML 解析器 BeautifulSoup(markup, ["lxml", "xml"]) OR BeautifulSoup(markup, "xml") (1)速度快 (2)唯一支持XML的解析器 需要安装C语言库
html5lib BeautifulSoup(markup, "html5lib") (1)最好的容错性 (2)以浏览器的方式解析文档 (3)生成HTML5格式的文档 (1)速度慢 (2)不依赖外部扩展

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python读写Excel文件的实例
Nov 01 Python
详解Python的Django框架中的通用视图
May 04 Python
Python爬虫之模拟知乎登录的方法教程
May 25 Python
python去掉空白行的多种实现代码
Mar 19 Python
python opencv3实现人脸识别(windows)
May 25 Python
Python人脸识别第三方库face_recognition接口说明文档
May 03 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
Jun 05 Python
在Python IDLE 下调用anaconda中的库教程
Mar 09 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
Jun 12 Python
Python实现数字的格式化输出
Aug 01 Python
Python实现哲学家就餐问题实例代码
Nov 09 Python
Python GUI库Tkiner使用方法代码示例
Nov 27 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 #Python
对python数据切割归并算法的实例讲解
Dec 12 #Python
python实现文本界面网络聊天室
Dec 12 #Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
Dec 12 #Python
python实现简单多人聊天室
Dec 11 #Python
在python中利用KNN实现对iris进行分类的方法
Dec 11 #Python
python 划分数据集为训练集和测试集的方法
Dec 11 #Python
You might like
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
js使用心得分享
2015/01/13 Javascript
jQuery横向擦除焦点图特效代码分享
2015/09/06 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
Angular2 自定义validators的实现方法
2017/07/05 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
Vue axios设置访问基础路径方法
2018/09/19 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
Scrapy框架使用的基本知识
2018/10/21 Python
Python input函数使用实例解析
2019/11/22 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
艺术用品:Arteza
2018/11/25 全球购物
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
Linux面试题LINUX系统类
2015/11/25 面试题
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
思想品德评语大全
2014/12/31 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript
Python实现Hash算法
2022/03/18 Python