最近一直需要接触爬虫,爬虫得到的页面数据需要进一步的处理才能够转化为我们可以使用的数据,在这里今天学习的是BeautifulSoup这个python的第三方的库,这是一款很优秀的产品,可以很好地处理html文件,网上一搜一大堆的资源,今天的学习内容主要是依据网上一篇超级详细的入门教程来进行实验的,不得不说里面的内容真的好多,一时半会也不能全部都理解,在这里先记录一下今晚的学习成果,接下来有时间继续学习。

接下来给出自己的代码,小脚本,对百度页面源码进行了操作:

#!/usr/bin/python
#-*-coding:utf-8-*-import urllib
from bs4 import BeautifulSoupdef bs_test():url = 'http://www.baidu.com'html = urllib.urlopen(url).read()print '百度页面html长度为:', len(html)#创建beautifulsoup对象soup = BeautifulSoup(html)#这个小函数可以格式化输出soup对象print soup.prettify()'''Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:Tag、NavigableString、BeautifulSoup、Comment'''#Tag,tag就是爬取得到的html源码中的一个一个的标签,Tag,它有两个重要的属性,是 name 和 attrsprint soup.title   #输出<title>标签print len(soup.title)print soup.head    #输出<head>标签print len(soup.head)print soup.a       #输出<a>标签print len(soup.a)print type(soup.a) #输出<a>标签的类型print soup.p       #输出<p>标签print soup.p.attrs #把 p 标签的所有属性打印输出print soup.nameprint soup.head.name#NavigableStringprint soup.p.string  #用.string方法获取标签里面的内容print type(soup.p.string)   #判断类型输出#BeautifulSoup对象表示的是一个文档的全部内容print type(soup.name)    #获取soup名字的类型print soup.nameprint soup.attrs#Comment 对象是一个特殊类型的 NavigableString 对象,其实输出的内容仍然不包括注释符号print soup.aprint soup.a.stringprint type(soup.a.string)#熟悉.contents.children属性,tag 的 .content 属性可以将tag的子节点以列表的方式输出print soup.head.contents print soup.head.children#.contents 和 .children 属性仅包含tag的直接子节点,.descendants 属性可以对所有tag的子孙节点进行递归循环for child in soup.descendants:print child#.strings获取多个内容,不过需要遍历获取for string in soup.strings:print(repr(string))#.stripped_strings输出的字符串中可能包含了很多空格或空行,使用 .stripped_strings 可以去除多余空白内容for string in soup.stripped_strings:print(repr(string))# .parent 属性print soup.p.parent.name#.next_sibling .previous_sibling 属性for sibling in soup.a.next_siblings:print(repr(sibling))#.next_element .previous_element 属性,输出当前节点前一个节点或者下一个节点print soup.head.next_element#搜索文档树find_all( name , attrs , recursive , text , **kwargs )find_all() 方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件print soup.find_all(['a','b'])  #查找所有的a标签soup.find_all("a", limit=2)    #可以限制返回的数量bs_test()

结果很大就不粘贴出来了,实际用的时候可以自己设置一个小点的html来进行实验,今天对bs4的初步学习就这些,还是刚刚入门的阶段,接下来还有很多很多需要学习的地方,欢迎有兴趣的同学一起来交流学习哈。

使用BeautifulSoup解析html入门相关推荐

  1. 爬虫入门一:BeautifulSoup解析豆瓣即将上映的电影信息

    爬虫入门一 一直很想学习一下爬虫,今天忙里偷闲看了一篇教程博客之后开始入门学习,很感谢教程作者的讲解与分享,文末附教程博客链接. BeautifulSoup解析豆瓣即将上映的电影信息 python代码 ...

  2. python安全攻防---爬虫基础---BeautifulSoup解析

    0x01 基础 使用bs4首先要安装,安装后导入 import bs4 bs对象有两个方法,一个是find,另一个是find_all find(标签名,属性值):只返回一个,返回也是bs对象,可以继续 ...

  3. python爬虫beautifulsoup_python爬虫beautifulsoup解析html方法

    用BeautifulSoup 解析html和xml字符串 实例: #!/usr/bin/python # -*- coding: UTF-8 -*- from bs4 import Beautiful ...

  4. Python3爬虫——用BeautifulSoup解析古诗文网

    我们之前已经用Xpath分析过了古诗文网,但还是感觉有点麻烦,所以今天来讲BeautifulSoup库,它可以很方便的帮我们抓取网页的数据,同样也支持lxml解析器,下面我们来详细介绍: 安装Beau ...

  5. 用 BeautifulSoup 解析器分析 RSS

    用 BeautifulSoup 解析器分析简易信息聚合RSS 运行代码 它是如何工作的 分析地址 遍历所有资讯 安装解析器 检查打印 运行代码 虽然今天传来不好的消息,京城新增数十例,但是调试程序的工 ...

  6. DoTween全解析(入门篇)

    DoTween全解析(入门篇) 概述: DoTween,Itween,这些名字作为一个Unity开发人员听起来并不陌生,它们在动画方面表现出了令人折服的能力,今天我带着大家来一起认识一下这款插件. 首 ...

  7. beautifulsoup解析

    简介 beautifulsoup和lxml都是解析器 优点:具有人性化接口 缺点:没有lxml效率高 bs4基本语法(bs4解析本地文件) html文件如下: <!DOCTYPE html> ...

  8. BeautifulSoup解析爱丽丝梦游仙境网页小练习

    BeautifulSoup解析爱丽丝梦游仙境网页小练习 html_doc = """ <html><head><title>The D ...

  9. Day08、BeautifulSoup解析库,MongoDB存储库,requests-html请求库

    一.解析库之bs4 ''' pip3 install beautifulsoup4 # 安装bs4 pip3 install lxml # 下载lxml解析器 ''' html_doc = " ...

最新文章

  1. 互联网1分钟 |1116
  2. Jerry Wang 2014年在SAP社区CRM板块的积分曾经一直占据第一
  3. 每天一个linux命令:【转载】less命令
  4. 有了它,Python编码再也不为字符集问题而发愁了!
  5. 【java基础知识】开启定时任务线程
  6. 387.字符串中的第一个唯一字符
  7. 挑战性题目DSCT103:客观指标评价问题
  8. 关于苹果绕ID的一些注意事项,A6-A7 Sliver 6.2 小白少走弯路。
  9. Win10自动更新后桌面文件不见了怎么办?
  10. 将uni-app项目编译为H5网站
  11. table固定首行首列
  12. 【微信小程序】全局变量的定义与使用
  13. 【转】初识caffe2
  14. BJTUOJ 1853 gangpener买零食(水~)
  15. 解决Nmap扫描出现的延时
  16. 陈本峰:HTML5跨屏前端框架Amaze UI的开源之道
  17. 学术 | ChatGPT负责人John Schulman:如何做好研究
  18. java计算机毕业设计在线招投标系统源码+系统+mysql数据库+lw文档
  19. 手机控制软件-Total_Control
  20. 简单好用的果蔬肉类净化工具,让食材餐具更安全,小尼熊果蔬清洗机体验

热门文章

  1. Python的UDP通讯(收发一体、多线程)
  2. bak 5. 编译libmad 出现error impossible constraint in “asm”时的解决办法.
  3. 二分类交叉熵损失函数python_二分类问题的交叉熵损失函数多分类的问题的函数交叉熵损失函数求解...
  4. 强连通分量(超详细!!!)
  5. 2010年10月13日创业投融资专委会北京活动报名:北极光创投合伙人、原阿里巴巴集团CTO吴炯分享B2B行业发展趋势及未来投资机会
  6. 负责任最苦,尽责任最乐
  7. 设计模式之略见一斑(适配器模式Adapter)
  8. Kubernetes各组件工作原理 Pod 生命周期
  9. access如何查询两张表的内容_计算机二级access题库
  10. Java 调用系统命令