Bs4解析
bs4数据分析
一、基础介绍
bs4 全名 BeautifulSoup,是编写 python 爬虫常用库之一,BeautifulSoup4也是一个html/xml的解析器,主要用来解析 html 标签。
-数据解析的原理:
1.标签定位
2.提取标签、标签属性中存储的数据值
- bs4数据解析的原理:
1.实例化一个BeautifulSoup对象,并且将页面源码数据加载到该对象中
2.通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位和数据提取
我们一般在使用bs4库进行数据分析时,最主要使用的都是beautifulsoup。所以我们在使用时一般都是引入这个库
from bs4 import BeautifulSoup
bs4提供用于数据解析的方法和属性有:
soup.find().text 获取标签内文本内容
soup.get_text() 获取标签内的文本内容
soup.get() 获取标签属性的值
soup.tagName:返回的是文档中第一次出现的tagName对应的标签
soup.find():
-soup.find(‘div’,class_/id/attr=‘song’)
soup.find_all(‘tagName’):返回符合要求的所有标签(列表)
find(‘tagName’):等同于soup.div
有了这些基本介绍下,我们就能够进行基本的bs4数据解析了
接下来将通过几个实例进行巩固。
二、安装bs4
pip install beautifulsoup4
三、实例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2023/11/29 9:18
# @Author : 你的秘密
# @File : @demo2pic.py
# @email :
import time
import fake_useragent
import requests
from bs4 import BeautifulSoup
head = {
'User-Agent': fake_useragent.UserAgent().random # 生成随机请求头
}
url = 'http://www.umeituku.com/bizhitupian/weimeibizhi/'
resp = requests.get(url, headers=head)
resp.encoding = 'utf-8'
# print(resp.text)
main_page = BeautifulSoup(resp.text, 'html.parser') # html.parser表示resp.text类型为html
alist = main_page.find('div', class_='TypeList').find_all('a')
# print(alist)
for a in alist:
try: # 用try因为有的网页不一样对应的想获取内容 相当于错误
href = a.get('href') # 通过get拿属性值
child_page_resp = requests.get(href)
child_page_resp.encoding = 'utf-8'
child_page_text = child_page_resp.text
child_page = BeautifulSoup(child_page_text, 'html.parser')
p = child_page.find('p', align='center')
img = p.find('img')
src = img.get('src')
except Exception as e:
src = ''
# print(src)
# 下载图片
if src != '':
img_resp = requests.get(src)
img_name = src.split('/')[-1]
with open("img/"+img_name, mode="wb") as f: # 该语句不能自己创键一个文件夹
f.write(img_resp.content)
time.sleep(1)
# 将图片或视频的目录标记排除 以防止pycharm自动索引变卡