Python爬虫基础(2) —— BeautifulSoup(解析数据,提取数据)

在这里插入图片描述

在这里插入图片描述

获取网页源代码:

import requests
#调用requests库
res=requests.get('URL')
#URL是网页链接
html=res.text
#把res的内容以媳妇穿的形式返回
print('响应状态码:',res.status_code)
#检查请求是否正确响应
print(html)
#输出网页源代码

爬虫的四个步骤就是:

在这里插入图片描述

第零步:获取数据用到的是requests库,用这个库来解决数据获取问题

第一步:BeautifulSoup

用来解析和提取网页中的数据

解析数据:我们平时使用浏览器上网,浏览器会把服务器返回的HTML源代码翻译为我们能看懂的样子,之后才能在网页上做各种操作。而在爬虫中,也要使用能读懂html的工具,才能提取到想要的数据。这就是解析数据
提取数据:是指把我们需要的数据从众多数据中挑选出来。
(在我看来我觉得所谓的解析数据就是先把网页源代码进行分析,去看看哪些行是标题,哪些行是属性等等,知道了之后就可以对其进行相关提取)

在这里插入图片描述

bs对象=BeautifulSoup(需要解析的文本,‘解析器’)

注意:
第零个参数是要被解析的文本,必须是字符串类型
第一个参数是用来标识解析器,网页解析器:html.parser

解析数据(网页代码):

import requests
#获取网页代码
from bs4 import BeautifulSoup
#导入BS库 beautifulsoup4
res=requests.get('URL')
#获取到网页
soup=BeautifulSoup(res.text,'html.parser')
#把网页解析为beautifulsoup对象soup
print(type(soup))
print(soup)

在这里插入图片描述
查看运行结果发现,soup的数据类型是<class’bs4.BeautifulSoup’>,说明soup是一BeautifulSoup对象。

在这里插入图片描述

以上就是爬虫第一步解析数据;

下面开始提取数据:
在这里插入图片描述

find()和find_all()这两个都是BeautifulSoup对象的两个方法,他们可以匹配html的标签和属性,把BeautifulSoup对象里符合要求的数据都提取出来。

在这里插入图片描述
首先,括号里面的class_,这里有一个下划线,是为了和python语法中的类class区分,避免冲突,当然除了用class属性去匹配还可以用别的属性来匹配,比如style等等。

其次,括号中的参数:标签和属性可以任选其一,也可以两个一起使用,这取决于我们要在网页中要提取的内容。

如果其中一个参数就可以准确定位的话,就只用一个参数检索即可,如果需要标签和属性同时满足才能准确定位的话那么两个(标签和属性)参数一起使用。

当使用find()来查找首个满足条件的语句时,对其进行type类型判断发现,那是一个Tag对象(<class ‘bs4.element.Tag’>,说明这是一个Tag类对象;
当使用find_all()查找所有满足条件的语句时,使用type对其进行判断类型,显示的是列表;运行结果是那三个满足条件的元素,它们一起组成了一个列表结构。打印items的类型,显示的是<class ‘bs4.element.ResultSet’>,是一个ResultSet类的对象。其实是Tag对象以列表结构储存了起来,可以把它当做列表来处理。

满足条件的多个语句组成了一个列表(比如说获取属性属于book的,有三个,这三个组成了一个列表,对这三个进行遍历)

import requests #调用requests库
from bs4 import BeautifulSoup #调用BeautifulSoup库
res=requests.get('URL')#返回一个response(响应)对象,赋值给res
html=res.text; #把res的内容以字符串的形式返回
soup=BeautifulSoup(html,'html.parser')#把网页解析为BS对象
items=soup.find_all(class_='book')#通过定位属性来获取我们想要的数据
for item in items:
	print('想要找的书都包含在这里了:\n',item)#打印item
	print(type(item))

运行结果:
在这里插入图片描述
可以看到这里对遍历出来的元素进行type判断时显示的是Tag对象!

可以看到遍历出来的数据打印时还是打印出了相关一起的网页源码,但我们只需要对应的汉字,下面就需要去对每一个Tag进行相关操作!

在这里插入图片描述
在这里插入图片描述Tag.text提出Tag对象中的文字,用Tag[‘href’]提取URL.

总代码:

import requests
from bs4 import BeautifulSoup 
res=requests.get('URL')
html=res.text #下面soup要解析的对象必须是字符串类型
soup=BeautifulSoup(html,'html.parser')
items=soup.find_all(class_='book')#通过匹配属性class=book提取我们想要的数据
for item in items: #遍历列表items
	kind=item.find('h2')#在列表中的每个元素里,匹配标签<h2>提取出数据
	title=item.find(class_=title)#在列表中的每个元素里,匹配属性class_='title'提取出数据
	brief=item.find(class_='info')## 在列表中的每个元素里,匹配属性class_='info'提取出数据
	print(kind.text,'\n',title.text,'\n',title['href'],'\n',brief.text)#打印书籍的类型、名字、链接和简介的文字

在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值