爬虫学习(一)BeautifulSoup库

BeautifulSoup库及一般提取方法

BeautifulSoup库通俗来说是【解析、遍历、维护“标签树”(例如html、xml等格式的数据对象)的功能库 】
运用BeautifulSoup库的demo:

 from bs4 import BeautifulSoup
  import requests
  url="http://python123.io/ws/demo.html"
  r=requests.get(url)
  demo=r.text        
  soup=BeautifulSoup(demo,'html.parser')
  #熬汤,解析html内容
  #demo存储被解析的html的内容
  #'html.parser'bs4库中解析器
 print(soup)
 print(soup.prettify())
 #使用prettify()格式化输出内容

在这里插入图片描述
1.得到一个BeautifulSoup对象后,一般通过BeautifulSoup类的基本元素来提取html中的内容:

基本元素说明
Tag标签,最基本的信息组织单元,分别用<>和</>标明开头和结尾
Name标签的名字,< p >…< /p >的名字是’p’,格式:< tag >.name
Attributes标签的属性,字典形式组织,格式:< tag >.attrs
NavigableString标签内非属性字符串,<>…</>中字符串,格式:< tag >.string
Comment标签内字符串的注释部分,一种特殊的Comment类型

(1)提取html中的信息:

print("body标签的信息:",soup.title)
print("a标签的信息:",soup.a)
print("a标签的类型:",type(soup.a))
print("a标签的属性:",soup.a.attrs)
print("a标签的第一个属性:",soup.a.attrs['class'])
**#用字典的方式获取a中class的属性**
print("a标签的非属性字符串内容:",soup.a.string)
print("p标签的非属性字符串内容:",soup.p.string)
**#p中还存在着标签b,但是b并没有被打印,说明string类型可跨多个层次**

在这里插入图片描述
(2)find_all方法
find_all(name,attrs,recursive,string,**kwargs)返回一个列表类型存储查找结果

soup.find_all(class_='title')
#class要加_因为这里的class是关键字
soup.find_all(id='link1')
soup.b
#<tag>(...)<=><tag>.find_all(...)
soup.find_all(['a','b'])
#标签a和b可以以列表的形式一起打印出来
for i in soup.find_all(True):
    print("i的名字是:",i.name)
    #True要大写,这里的true指的是recursive变量
for t in soup.find_all('a'):
    print("t是:",t)
    print("t的类型是:",type(t))
    print("t的url链接是:",t.get('href'))
    print("t的非属性字符串为:",t.string)
    #两个叫a的标签参数不同可以用循环的方式打印
   

(3)关于html的遍历
下行遍历:

.contents子节点的列表,将标签所有的儿子节点存入列表
.children迭代类型,用于循环遍历儿子节点
.descendants迭代类型,循环遍历所有的子孙结点

上行遍历:

.parent将标签所有的父亲节点存入列表
.parents迭代类型,用于循环遍历先辈节点

平行遍历:

.next_sibling返回按照html文本顺序的下一个平行节点的标签
. next_siblings迭代 ,同上
.previous_sibling返回按照html文本顺序的上一个平行节点的标签
.previous_siblings迭代,同上
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值