爬虫:BeautifulSoup(5)--find_all

过滤器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 = "https://www.csdn.net/"
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实现一个简单的爬虫https://blog.csdn.net/jklcl/article/details/82193107

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值