BeautifulSoup 文档里,find、find_all两者的定义如下:

find_all(tag, attributes, recursive, text, limit, keywords)

find_all(标签、属性、递归、文本、限制、关键词)

find(tag, attributes, recursive, text, keywords)

find与find_all的区别,find只会取符合要求的第一个元素,find_all会根据范围限制参数limit限定的范围取元素(默认不设置代表取所有符合要求的元素,find 等价于 find_all的 limit =1 时的情形),接下来将对每个参数一一介绍。

另外,find_all会将所有满足条件的值取出,组成一个list

一、标签tag

标签参数 tag 可以传一个标签的名称或多个标签名称组成的set做标签参数。例如,下面的代码将返回一个包含 HTML 文档中所有标题标签的列表: find_all({"h1","h2","h3"})

下面以中原网页面举例,如下图,现在要将页面上的所有标题取出,观察html可以发现,标题对应的tag 是h4,则soup.find_all('h4')

from bs4 import BeautifulSoup
import requestsurl = 'https://gz.centanet.com/ershoufang/'
urlhtml=requests.get(url)
urlhtml.encoding='utf-8'
soup=BeautifulSoup(urlhtml.text,'lxml')alink = soup.find_all('h4')
print(alink)

上面例子只是一个标签的情况,如果多个标签写法相同,只是注意要将所有的标签写在一个set里面

二、属性attributes

属性参数 attributes 是用字典封装一个标签的若干属性和对应的属性值。如,下面这个函数会返回 HTML 文档里"house-name", "house-txt"两种的 p 标签。find_all("p", {"class":{"house-name", "house-txt"}})

如下图,现在要获取红色框选中的三行信息,通过观察可知,三行信息属性"house-name", "house-txt",标签为p,则

alink = soup.find_all("p", {"class":{"house-name", "house-txt"}})
print(alink)

三、递归recursive

递归参数 recursive 是一个布尔变量。你想抓取 HTML 文档标签结构里多少层的信息?如recursive 设置为 True, find_all 就会根据你的要求去查找标签参数的所有子标签,以及标签的子标签。如果 recursive 设置为 False, find_all 就只查找文档的一级标签。 find_all默认是支持递归查找的(recursive 默认值是 True);一般情况下这个参数不需要设置,非你真正了解自己需要哪些信息,而且抓取速度非常重要,那时你可以设置递归参数。

这个太少用了(反正我自己就没用过,不举例了)

四、文本text

文本参数 text 有点不同,它是用标签的文本内容去匹配,而不是用标签的属性。

直接举例吧,在这个网页中,我们要查找一下,户型为“2室1厅”的有多少个,则

alink = soup.find_all(text='2室1厅')
print(alink)

需要特别注意一点,这里查找是用的是完全匹配原则,意思是如果这里你用了find_all(text='2室'),得到的结果会是0个

五、关键词keywords

关键词参数 keyword,自己选择那些具有指定属性的标签

同样是上面网页的内容,现在要取id='one2'的内容,则

from bs4 import BeautifulSoup
import requestsurl = 'http://zfcj.gz.gov.cn/data/laho/projectdetail.aspx?changeproInfoTag=1&changeSellFormtag=1&pjID=47140&name=fdcxmxx'
urlhtml=requests.get(url)
urlhtml.encoding='utf-8'
soup=BeautifulSoup(urlhtml.text,'lxml')alink = soup.find_all(id="one2")
print(alink)

注意:如果是class、id等参数,用keywords 或者attributes用法一样,如果是一些其他参数,则用keywords

python 爬虫之find、find_all用法相关推荐

  1. python爬虫库的常见用法_$python爬虫系列(2)—— requests和BeautifulSoup库的基本用法...

    本文主要介绍python爬虫的两大利器:requests和BeautifulSoup库的基本用法. 1. 安装requests和BeautifulSoup库 可以通过3种方式安装: easy_inst ...

  2. Python爬虫利器五Selenium用法

    在上一节我们学习了 PhantomJS 的基本用法,归根结底它是一个没有界面的浏览器,而且运行的是 JavaScript 脚本,然而这就能写爬虫了吗?这又和 Python 有什么关系?说好的 Pyth ...

  3. python补充urllib教程,Python爬虫之urllib基础用法教程

    综述 本系列文档用于对Python爬虫技术进行简单的教程讲解,巩固自己技术知识的同时,万一一不小心又正好对你有用那就更好了. Python 版本是3.7.4 urllib库介绍 它是 Python 内 ...

  4. python 爬虫前奏六 ExpectedConditions用法大全

    在上一章python 爬虫前奏五 webdriver中的等待中简单的提过WebDriverWait与expected_conditions结合使用,但是这个是需要详细了解的 内容来源于互联网,这里仅做 ...

  5. 以视频爬取实例讲解Python爬虫神器Beautiful Soup用法

    1.安装BeautifulSoup4 easy_install安装方式,easy_install需要提前安装 1 easy_install beautifulsoup4 pip安装方式,pip也需要提 ...

  6. python爬虫——BeautifulSoup库函数find_all()

    python--BeautifulSoup库函数find_all() 一.语法介绍 find_all( name , attrs , recursive , string , **kwargs )  ...

  7. python爬虫---requests库的用法

    requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多 因为是第三方库,所以使用前需要cmd安装 pip install requests 安装完成后import一下 ...

  8. Python爬虫辅助库BeautifulSoup4用法精要

    BeautifulSoup是一个非常优秀的Python扩展库,可以用来从HTML或XML文件中提取我们感兴趣的数据,并且允许指定使用不同的解析器.由于beautifulsoup3已经不再继续维护,因此 ...

  9. Python爬虫扩展库BeautifulSoup4用法精要

    BeautifulSoup是一个非常优秀的Python扩展库,可以用来从HTML或XML文件中提取我们感兴趣的数据,并且允许指定使用不同的解析器.由于beautifulsoup3已经不再继续维护,因此 ...

  10. Python爬虫之Spider类用法简单介绍

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 一.网络爬虫 网络爬虫又被称为网络蜘蛛(

最新文章

  1. Java-JVM虚拟机内存垃圾回收机制gc入门:引用类型,对象标记算法,回收算法,常见的 garbage collector
  2. 5分钟了解Zigbee的前世今生
  3. java linkedlist和arraylist添加元素时性能比较
  4. 【技术累积】【点】【java】【29】MapUtils
  5. 我感觉这个书上的微信小程序登陆写得不好
  6. 前端学习(2601):什么是跨域请求
  7. springmvc 拦截器_Spring MVC拦截器学习
  8. 美团面试题:Hashmap的结构,1.7和1.8有哪些区别,深入的分析
  9. 【开发者笔记】java 利用jna调用c#的dll
  10. scss与sass介绍
  11. 第 7 章 使用filter过滤请求
  12. atitit.报表最佳实践oae 与报表引擎选型
  13. 使用Zip命令进行本地提权(类Unix系统)
  14. windows微信双开
  15. 按键精灵X学习笔记(二):键盘命令
  16. 什么蓝牙耳机适合学生党?内行推荐四款适合学生党的蓝牙耳机
  17. oracle-DDL对表的操作
  18. 【SQLite3+Qt开发】SQLite3简要介绍+在Qt5中的使用步骤
  19. VDA19颗粒清洁度测试方法及要素
  20. 【HaaS Python 硬件积木】 BMP280气压传感器

热门文章

  1. BUUCTF_Crypto题目题解记录1
  2. oracle关闭参数,在Oracle关闭情况下如何修改spfile的参数
  3. python输入一个英文句子_Python给定一个句子倒序输出单词以及字母的方法
  4. element 解决 Error: target is not existed: .page-component__scroll .el-scrollbar__wrap
  5. mac os 多窗口固定顺序的方法
  6. UT-Exynos4412开发板三星ARM四核旗舰开发平台android4.0体验-7GPS功能调试支持
  7. 程序员创业必读的几本书
  8. Data Availability
  9. 考研数学-初数1主讲人:郑小松-2020年07月04日
  10. 【两周快速入门pr】一、电子相册案例——快速带你走进剪辑的世界