0
点赞
收藏
分享

微信扫一扫

爬虫:BeautifulSoup(5)--find_all

今天你读书了吗 2022-11-20 阅读 106


过滤器find_all

find_all(name, css, recursive , text , keyword )

​find_all​​是Beautiful Soup中比较重要的过滤器,主要的作用是对HTML进行解析,提取关键的标签,关键的属性,关键的文字,name和 css又是find_all中相对重要的两个参数,掌握了这两个参数find_all使用也就手到擒来了。

from bs4 import  BeautifulSoup
import requests

url = "
html = requests.get(url)

soup = BeautifulSoup(html.text, features="html.parser")

name

​name​​是指我们的标签的名字;

img_list = soup.find_all('img' )
for img in img_list:
print(img)

也可以是一个列表

ha_list = soup.find_all(['h2', 'a' ])
for ha in ha_list:
print(ha)

keyword

​keyword​​是按照属性来搜索,也就是属性关键字比如id=‘1235’等等

img_list = soup.find_all(id="nav")
for img in img_list:
print(img)

css类名

​css​​​类名是通过搜索css类名的关键字​​class​​,Beautiful Soup的4.1.1版本以后使用_class否则会报错

class_list = soup.find_all(class_="common_num ")
for class_ in class_list:
print(class_)

和上面那条一样:

soup.find_all(attrs={"class": "common_num"})

recursive

​recursive​​只是一个单纯的参数,用来显示搜索tag的直接子节点,要么不用,要么设为false,当设为false时,只显示搜索tag的直接子节点

print(soup.find_all("title"))
# [<title>CSDN-专业IT技术社区</title>]

print(soup.find_all("title", recursive=False))
# []

text

通过 ​​text​​​ 参数可以搜搜文档中的字符串内容.与 ​​name​​​ 参数的可选值一样, ​​text​​ 参数接受字符串,正则表达式,列表看例子:

#字符串
list = soup.find_all(text="CSDN-专业IT技术社区" )
print(list)

#正则表达式
text = soup.find_all(text=re.compile("CSDN"))
print(text)

#列表
list = soup.find_all(text=["推荐" , "最新文章"])
print(list)

limit

​limit​​ 参数限制返回结果的数量

img_list = soup.find_all('img' , limit=3)
for img in img_list:
print(img)

总结

对于过滤器来说,主要是灵活运用,find_all中的各个参数,可以同时使用,接下来会用find_all实现一个简单的爬虫

在Beautiful Soup中比较好用的还有select。



举报

相关推荐

0 条评论