【爬虫入门练习日记6】bs4数据解析

bs4是Python特有,bs4只支持 属性定位,而不支持索引定位。

数据解析原理:

1.标签定位

2.提取标签、标签属性中存储的数据值

bs4数据解析原理:

1.实例化一个BeautifulSoup对象,并且将页面源码数据加载到该对象中

2.通过调用BeautifulSoup对象中相关的属性或方法进行标签定位和数据提取

环境安装:

pip install bs4
pip install lxml  # lxml是解析器

如何实例化BeautifulSoup对象:

from bs4 import BeautifulSoup

对象的实例化:

1.将本地的html文件中的数据加载到该对象中

fp = open('./study.html','r',encoding='utf-8')
soup = BeautifulSoup(fp,'lxml')
print(soup)

2.将互联网中获取的页面源码加载到该对象当中

page_text = response.text
soup = BeautifulSoup(page_text,'lxml')

用于数据解析的方法和属性:

tagName指的是html的标签名称,比如:<p>,<html>,<a>,<table>等

1.soup.tagName

返回的是html文档中第一次出现的tagName标签对应的标签。

例如:

print(soup.p)   # 会打印出html文档中第一次出现p标签
p_text = soup.p

2.soup.find()

find()有两种用法。

第一种用法:

soup.find('tagName'),等同于soup.tagName的用法,同样可以返回的是html文档中第一次出现的tagName标签对应的标签。

print(soup.find('a'))

第二种用法:属性定位

soup.find('tagName',标签属性)

tagName_text = soup.find('p',class_="title")

3.soup.find_all()用法

soup.find_all('tagName'),可以找到符合要求的所有内容,返回就是一个列表

4.soup.select()用法

4.1select('某种选择器标签')

返回一个列表,返回所有符合要求的标签内容。

soup.select(".title")
# .title等同于class = "title"

4.2层级选择器

用>作为划分层级分割,要从直系角度出发

list_text = soup.select('.title > ul > li > a')[0]
# list_text = soup.select('.title > ul > li > a')这返回的是一个列表,然后通过索引,获取字符串

html文档中包含多个li,a标签,但是只想获取第一个,而bs4只支持属性定位,不能索引定位,而且list_text返回的是表格形式,在获取表格形式之后利用索引是允许的。

4.3省略

利用空格,空格代表多个层级

list_text = soup.select(.title>ul  a')[0]

标签定位为获取标签所存储的文本内容。

获取标签之间的文本内容的方法(两个属性一个方法)

1.soup.tagName.text

page_text = soup.select('.title>ul a')[0].text

2.soup.tagName.string

page_text = soup.select('.title>ul a')[0].string

3.soup.tagName.get_text()方法

page_text = soup.select('.title>ul a')[0].get_text()

三者区别:

text与get_text():

可以获取某一个标签中所有文本内容(该标签内包含的所有层级文本内容)

string:

只可以获取该标签下面直系的文本内容

获取标签中属性值的方法

page_value = soup.tagName['属性名称']

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值