python bs_python关于bs4库的整理

1,BeautifulSoup库是解析,遍历,维护“标签树”代码的功能库;名字为beautifulsoup4或bs4;

引用方式为:from bs4 import BeautifulSoup  或者   import bs4;

1.1 BeautifulSoup类的五种基本元素:

1.1.1  Tag标签:

  ... 

  ;

意义:最基本的信息组织单元,标签总是成对出现,标签头常包含有该标签的多对属性(attributes);

引用格式:对象.标签名字;

格式意义:表示返回标签名字为name的bs4类对象的标签全部内容;

以下四种属性都是tag标签基础上的衍生属性(便于理解这么记,语法上可能不成立);

1.1.2 Name 标签名字:

...

意义:标签的名字为p;

引用格式:对象.标签名字.name;

格式意义:表示返回该标签的名字;

1.1.3 Attributes 标签属性,

The demo python introduces several python courses.

意义:class="title"为标签的类属性;

引用格式:对象.标签名字.attrs['class'];

格式意义:返回该标签属性的字典形式(包含该标签的所有属性);若是加上后缀中括号,表示返回中括号内 特定类的属性值,此处应返回'title';

1.1.4 NavigableString 标签内非属性字符串(...内容部分);

格式:对象.标签名字.string;

格式意义:返回该标签的内容部分;如1.1.3例中的灰色部分;

1.1.5 Comment 标签内字符串的注释部分,一种特殊的Comment类型;

格式:以

格式意义:(以后理解了补充)

importrequestsfrom bs4 importBeautifulSoup

r=requests.get("http://www.python123.io/ws/demo.html")

demo=r.text

soup=BeautifulSoup(demo,'html.parser')

soup.prettify()print(soup.title)print(soup.title.name)print(soup.title.parent.name)print(soup.p.attrs)print(soup.title.string)

This is a python demo pagetitle

head

{'class': ['title']}

Thisis a python demo page

1.2  beautifulsoup库的解析语法:

1.2.1  soup=BeautifulSoup('...data...','html.parser')

该函数表示以‘html.parser’的方式将'data'解析成BeautifulSoup类,存入对象soup中;

1.2.2  soup.prettify()

该函数为HTML文本对象soup增加\n,提高文本的可读性;

1.2.3  bs4库默认将HTML文本以utf-8编码解析,Python3.x也是;

1.2.4  type()

可以返回标签的类型,或者标签属性的类型;

2, bs4库的遍历方法:

2.0  迭代类型:迭代类型只能用在for和in循坏语句中;

2.1  下行遍历:

2.1.1   .contents :返回所有子节点的节点信息存入列表;'\n'属于一个子节点;

2.1.2   .children: 用于循环遍历子节点;迭代类型;用法举例如下:

for child insoup.body.children:print(child)

2.1.3   .descendants: 用于循环遍历所有子孙节点;迭代类型;用法举例如下:

#先打印body的子节点p,接着打印p的子节点b,然后打印b的内容字符串;

#在遍历的时候可以把标签,标签内容,NavigitableString内容,换行符,都视为节点;因为都会遍历;

for child insoup.body.descendants:print(child)

2.2  上行遍历:

2.2.1  .parent :  返回父节点的标签;

2.2.2  .parents : 返回父节点以及先辈节点的标签;

2.2.3  我们在上行遍历parents的时候会遍历到对象本身,但是对象本身是不具有标签的,建议加上判断语句区分;

2.3  平行遍历:(不同父节点下的平行节点不能平行遍历)

2.3.1  .next_sibling :  返回当前节点的下一平行节点;标签之间的NavigableString内容也是节点;

2.3.2  .previous_sibling:  返回当前节点的上一平行节点;

2.3.3  .next_siblings:  用于循坏遍历当前节点的后续平行节点;迭代类型;

for sibling insoup.a.next_siblings:print(sibling)

2.3.4  .previous_siblings:用于循坏遍历当前节点的前续平行节点;迭代类型;

for sibling insoup.a.previous_siblings:print(sibling)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值