- 下载
- 基本使用
- 标签定位
- 标签属性定位
- 选择器定位
- 数据的提取
下载
pip install bs4
pip install lxml
基本使用
from bs4 import BeautifulSoup
#1.创建一个BeautifulSoup的工具对象,然后把即将被解析的页面源码数据加载到该对象中#参数1:被解析的页面源码数据#参数2:固定形式的lxml(一种解析器)
soup = BeautifulSoup(fp,'lxml')
标签定位
title_tag = soup.title
p_tag = soup.div
print(p_tag )
查找到html源码的第一个div标签
标签属性定位
soup.find(tagName,attrName='value')
tags = soup.find_all('a',class_='du')
`
第二个参数可以是class_ 和 id
find_all是可以获取全部
find只查找一个
#注意:find只可以定位满足要求的第一个标签
#定位到了class属性值为song的div标签
div_tag = soup.find('div',class_='song')
print(div_tag )
print("===========================")
#定位到了id的属性值为feng的a标签
a_tag = soup.find('a',id='feng')
print(a_tag )
选择器定位
#常用的选择器:class选择器(.class属性值) id选择器(#id的属性值)
tags = soup.select('#feng') #定位到id的属性值为feng对应的所有标签
tags = soup.select('.du') #定位到class属性值为du对应的所有标签
#层级选择器:>表示一个层级 一个空格可以表示多个层
tags = soup.select('.tang > ul > li > a')
tags = soup.select('.tang a')
print(tags)
数据的提取
#tag.string:只可以将标签直系的文本内容取出
#tag.text:可以将标签内部所有的文本内容取出
tag = soup.find('a',id='feng')
content = tag.stringdiv_tag = soup.find('div',class_='tang')
content = div_tag.text#方式2:提取标签的属性值 tag['attrName']
img_tag = soup.find('img')
img_src = img_tag['src']
print(img_src)