神码ai火车头采集器伪原创【php源码】( 二 )


③根据标签和标签属性定位
#查询class为’s-top-wrap s-isindex-wrap‘的一个div标签print(soup.find('div',class_='s-top-wrap s-isindex-wrap'))#查询id为s_top_wrap的第一个div标签print(soup.find('div',id='s_top_wrap'))
④根据指定的标签名和对应的标签内容定位
#查询到内容为“设置“的第一个span标签print(soup.find('span',string="设置"))
2.2 ()
和find()函数用法一样,不同之处在于find()只返回满足条件的第一个标签对象,而()返回所有满足条件的标签对象,是一个列表 。有时需要两个配合使用 。
①根据标签名定位所有指定的标签
#查询所有是img的标签,返回的是一个列表print(soup.find_all('img'))
②根据属性名定位所有满足条件的标签
#查询所有class属性为’s-top-wrap s-isindex-wrap‘的任意标签print(soup.find_all(class_='s-top-wrap s-isindex-wrap'))#查询id属性为s_top_wrap的所有标签,其他属性名照写print(soup.find_all(id='s_top_wrap'))
③根据指定的标签和对应的属性名定位所有满足条件的标签
#查询所有class属性为's-top-wrap s-isindex-wrap'的div标签print(soup.find_all('div',class_='s-top-wrap s-isindex-wrap'))#查询所有id属性为's_top_wrap'的div的标签print(soup.find_all('div',id='s_top_wrap'))
④根据指定的标签名和对应的标签内容定位
#查询内容为“设置“的所有span标签print(soup.find_all('span',string="设置"))
2.3 ()
()函数也是定位所有满足条件的标签,返回值也是一个列表
①根据标签名定位
#查询所有是img的标签,返回的是一个列表print(soup.select("img"))
②根据标签名和属性定位
#查询class属性为’s-top-wrap‘的所有标签print(soup.select('.s-top-wrap'))#查询id属性为‘s_top_wrap'的所有标签print(soup.select('#s_top_wrap'))#通过标签名和属性一起配合查询,其他属性直接写对应的属性如:a[hrsr='https']print(soup.select('div[id="s_top_wrap"]'))
③定位对应的子标签
#查所有a标签下的img标签print(soup.select('a>img'))
三、bs4基本操作
作用:获取标签中自己想要的内容,如:文字、图片链接、视频链接、音频链接等
注意:soup只是一个变量,就是你查询出来后新的获取范围
3.1 获取标签内的文本
#分别获取a标签和p标签内的文本内容(推荐第一种方式)print(soup.a.text)print(soup.p.string)
3.2 获取标签属性
#获取第一个div标签的所有属性print(soup.div.attrs)
3.3 获取指定标签的属性值
#获取div标签中的class属性的值print(soup.div.attrs.get('class'))#获取div标签中的id属性的值print(soup.div.get('id'))#获取img标签中的src属性的值print(soup.img.get('src'))
3.4 遍历获取的标签的属性值
#获取到所有的img标签,返回值为列表imgs=soup.find_all('img')for i in imgs:#img标签中src的值print(i['src'])