建设网站需要了解什么,互联网金融公司排名,wordpress 409错误,连云港优化推广目录 一、bs4的基本使用 #xff08;1#xff09;导入 #xff08;2#xff09;创建对象 二、节点定位 1、根据标签名查找节点 2、基本函数使用 #xff08;1#xff09;find #xff08;2#xff09;find_all #xff08;3#xff09;select 三、节点信息 1、获取节… 目录 一、bs4的基本使用 1导入 2创建对象 二、节点定位 1、根据标签名查找节点 2、基本函数使用 1find 2find_all 3select 三、节点信息 1、获取节点内容 2、获取节点属性 附bs4的基本使用.html 四、bs4的应用 注Python3.10使用 Beautiful Soup 时出现错误“AttributeError collections has no attribute Callable”。 在 python 3.10 中collections.Callable已移至collections.abc.Callable 。 故推荐用Python3.10以下版本。 一、bs4的基本使用
1导入
from bs4 import BeautifulSoup
2创建对象
--服务器响应的文件生成对象
soup BeautifulSoup(response.read().decode(),lxml)
--本地文件生成对象
#默认打开文件的编码格式是gbk,故在打开文件的时候要指定编码 soup BeautifulSoup(open(bs4的基本使用.html,encodingutf-8),lxml)
二、节点定位
1、根据标签名查找节点
#找到的是第一个符合条件的数据
print(soup.a)
#获取标签的属性和属性值
print(soup.a.attrs)2、基本函数使用
1find
#找到的是第一个符合条件的数据
print(soup.find(a)) #和soup.a差不多
#根据title的值来找到对应的标签对象
print(soup.find(a,title A1))
#根据class的值来找到对应的标签对象
#注意class需要添加下划线
print(soup.find(a,class_ A2))
2find_all
# 返回的是一个列表 并且返回了所有的a标签
print(soup.find_all(a))#如果需要获取多个标签的数据则需要在find_all的参数中添加的是列表的数据
print(soup.find_all([a,span]))#limit是查找前几个数据
print(soup.find_all(li,limit2))
3select
#select会返回一个列表并且会返回多个数据
print(soup.select(a)) #和find差不多#类选择器
#可以通过.代表class
print(soup.select(.A2))#可以通过#代表id
print(soup.select(#L1))#属性选择器
#查找li标签中有id的标签
print(soup.select(li[id]))#查找到li标签中id为L1的标签
print(soup.select(li[idL1]))# 层级选择器
#后代选择器 查找div下面的li 返回的是一个列表
print(soup.select(div li))#子代选择器
#某标签的第一级子标签
# warning:在大多数编程语言中需要div ul li 这样写但是在bs4中可以写divulli。
print(soup.select(divulli))# 获取多个标签的数据
print(soup.select(a,span))
#区别 同find_all 一样输出
print(soup.find_all([a,span]))
三、节点信息
1、获取节点内容
obj soup.select(#d1)[0]
#如果标签对象中只有内容那么string和get_text()都可以使用
#如果标签对象中除了内容还有标签那么string就会输出NONE
print(obj.string)
print(obj.get_text())
2、获取节点属性
obj soup.select(#p1)[0]
#name是标签的名字
print(obj.name)
#将属性值作为一个字典返回
print(obj.attrs)#获取节点的属性
obj soup.select(#p1)[0]
print(obj.attrs.get(class))
print(obj.get(class))
print(obj[class])
附bs4的基本使用.html
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
bodydivulli idL1张三/lili idL2李四/lili王五/lia href id classA2蜀道之南718/aspan万事如意/span/ul/diva href titleA1百度/adiv idd1span恭贺新禧/span/divp idp1 classp1大吉大利/p
/body
/html 四、bs4的应用
用bs4来爬取麦当当的所有汉堡品类
import urllib.requesturl https://www.mcdonalds.com.cn/index/Food/menu/burgerresponse urllib.request.urlopen(url)content response.read().decode(utf-8)from bs4 import BeautifulSoupsoup BeautifulSoup(content,lxml)#//span[classname]/text()
name_list soup.select(.name)for name in name_list:print(name.get_text())