from bs4 import BeautifulSoup

lxml 以lxml形式解析html,例:BeautifulSoup(html,'lxml') # 注:html5lib 容错率最高

find 返回找到的第一个标签

find_all 以list的形式返回找到的所有标签

limit 指定返回的标签个数

attrs 将标签属性放到一个字典中

string 获取标签下的非标签字符串(值), 返回字符串

strings 获取标签下的所有非标签字符串, 返回生成器。

stripped_strings 获取标签下的所有非标签字符串,并剔除空白字符,返回生成器。

get_text # 获取标签下的所有非标签字符串,返回字符串格式

contents、children都是返回某个标签下的直接子元素,包含字符串。 contents 返回一个列表,children 返回一个生成器

select 方法和find_all极其相似

以实际例子作说明:

1、定义一个html,并使用BeautifulSoup的lxml解析

from bs4 importBeautifulSoup

html= '''

职位名称 职位类别 时间
职位一 类别一 时间1
职位二 类别二 时间2
职位3 类别3 时间3

这是一个div

'''soup= BeautifulSoup(html,'lxml') # 解析html

------------------------------------------------------------ find_all --------------------------------------------------------------------------

2、获取所有的tr标签

find 返回找到的第一个标签,find_all以list的形式返回找到的所有标签

trs = soup.find_all('tr') #返回列表

n=1

for i intrs:print('第{}个tr标签:'.format(n))print(i)

n+=1

3、获取第二个tr标签

limit 可指定返回的标签数量

trs = soup.find_all('tr',limit=2)[1] #从列表中获取第二个元素,limit 获取标签个数

print(trs)

4、获取class='a1'的tr标签

a.方法一: class_

trs = soup.find_all('tr',class_='a1')

n=1

for i intrs:print('第{}个class=''a1''的tr标签:'.format(n))print(i)

n+=1

b.方法二:attrs 将标签属性放到一个字典中

trs = soup.find_all('tr',attrs={'class':'a1'})

n=1

for i intrs:print('第{}个class=''a1''的tr标签:'.format(n))print(i)

n+=1

5、提取所有id='test'且class='test'的a标签

方法一:class_

alist = soup.find_all('a',id='test',class_='test')

n=1

for i inalist:print('第{}个id=''test''且class=''test''的a标签:'.format(n))print(i)

n+=1

方法二:attrs

alist = soup.find_all('a',attrs={'id':'test','class':'test'})

n=1

for i inalist:print('第{}个id=''test''且class=''test''的a标签:'.format(n))print(i)

n+=1

6、获取所有a标签的href属性

alist = soup.find_all('a')#方法一:通过下标获取

for a inalist:

href= a['href']print(href)#方法二: 通过attrs获取

for a inalist:

href= a.attrs['href']print(href)

7、获取所有的职位信息(所有文本信息)

string 获取标签下的非标签字符串(值), 返回字符串

注:第一个tr为标题信息,不获取。从第二个tr开始获取。

trs = soup.find_all('tr')[1:]

movies=[]for tr intrs:

move={}

tds= tr.find_all('td')

move['td1'] = tds[0].string #string 取td的值

move['td2'] = tds[1].string

move['td3'] = tds[2].string

movies.append(move)print(movies)

8、获取所有非标记性字符

strings 获取标签下的所有非标签字符串, 返回生成器。

trs = soup.find_all('tr')[1:]for tr intrs:

infos= list(tr.strings) #获取所有非标记性字符,包含换行、空格

print(infos)

9、获取所有非空字符

stripped_strings 获取标签下的所有非标签字符串,并剔除空白字符,返回生成器。

trs = soup.find_all('tr')[1:]for tr intrs:

infos= list(tr.stripped_strings) #获取所有非空字符,不包含换行、空格

print(infos)

#stripped_strings 获取所有职位信息

trs = soup.find_all('tr')[1:]

movies=[]for tr intrs:

move={}

infos=list(tr.stripped_strings)

move['职位'] =infos[0]

move['类别'] = infos[1]

move['时间'] = infos[2]

movies.append(move)print(movies)

10、get_text 获取所有职位信息

get_text  获取标签下的所有非标签字符串,返回字符串格式

trs = soup.find_all('tr')[1]

text= trs.get_text() #返回字符串格式

print(text)

------------------------------------------------------------ select --------------------------------------------------------------------------

11、获取所有tr标签

trs = soup.select('tr')for i intrs:print('tr标签:',i)

12、获取第二个tr标签

trs = soup.select('tr')[1]print(trs)

13、获取所有class="al"的tr标签

#方法一:

trs = soup.select('tr.a1') #tr标签的class属性

for i intrs:print(i)#方法二:

trs = soup.select('tr[class="a1"]') #tr标签的class属性

for i intrs:print(i)

14、提取所有a标签的href属性

#方法一:

a = soup.select('a')for i ina:print(i['href'])#方法二:

a = soup.select('a')for i ina:print(i.attrs['href'])

15、获取所有的职位信息

trs = soup.select('tr')for i intrs:print(list(i.stripped_strings))

欢迎查漏补遗!!

python soup.find_初识python 之 爬虫:BeautifulSoup 的 find、find_all、select 方法相关推荐

  1. [Python/转载]Python 100 Day : 初识Python

    初识Python Python简介 Python的历史 1989年圣诞节:Guido von Rossum开始写Python语言的编译器. 1991年2月:第一个Python编译器(同时也是解释器)诞 ...

  2. 【搬运自用】Python目录及初识Python - 100天从新手到大师Day01(GitHub)

    原作者:骆昊 https://github.com/jackfrued/Python-100-Days 更多内容欢迎查看并订阅专栏'Python从新手到大师' 第一部分目录 Day01~15 - Py ...

  3. 初识python教学反思_[python第一课]初识python

    print("1.第一章:初识python\npython历史:\n1.python是用c语言写的\n2.python是可以调用c语言库函数\n3.Python1.0是1994年1月\n4. ...

  4. Python开发:初识Python

    Python环境: 安装Python: pyrhon安装在os上,执行操作:写一个文件,文件中按照python的规则写,将文件交给python软件,读取文件的内容,然后进行转换和执行,最终获取结果. ...

  5. 【100天精通python】Day1:python入门_初识python,搭建python环境,运行第一个python小程序

    目录 专栏导读 1 初始python python 概述 python的应用领域 应用python的公司 2 搭建python 开发环境 2.1 安装python(以windows 系统为例)(1)下 ...

  6. python soup歌词_python学习之爬虫(一) ——————爬取网易云歌词

    接触python也有一段时间了,一提到python,可能大部分pythoner都会想到爬虫,没错,今天我们的话题就是爬虫!作为一个小学生,关于爬虫其实本人也只是略懂,怀着"Done is b ...

  7. python soup提取叶子标签_python3用BeautifulSoup抓取div标签

    #-*- coding:utf-8 -*-#python 2.7#XiaoDeng#http://tieba.baidu.com/p/2460150866#标签操作 from bs4 importBe ...

  8. python soup提取叶子标签_python 利用beautifulSoup提取页面多个标签的文本内容

    初学beautifulsoup解析库,拿一个招聘网页练手,想达到提取多个标签的文本内容,但是目前只可以提取到单个标签的单个文本内容,多标签的文本如何提取? from requests.exceptio ...

  9. Python基础(1) - 初识Python

    Python 特点: 1)面向对象 2)解释执行 3)跨平台.可移植 4)垃圾回收机制 5)动态数据类型.强类型 6)可扩展.可嵌入 Python可以方便调用C/C++等语言,同时也可以方便的被C/C ...

最新文章

  1. kf真空接头标准尺寸_酒泉VER8314KN39H出口过滤器滤芯 高线真空滤油机介
  2. python三元运算符怎么使用_Python的三元运算符使用方法
  3. 使用while循环输入 1 2 3 4 5 6 8 9 10
  4. P2150-[NOI2015]寿司晚宴【dp】
  5. php延迟更新,ThinkPHP开发指南-模型-高级模型之延迟更新
  6. 怎么查看服务器系统内存,怎么查看服务器系统内存
  7. 盘点多数企业容易犯的五个大数据错误
  8. Android 系统(263)---Glide框架
  9. centos7配置IP地址CentOS7 修改hostname,ip地址以及hosts(永久生效)
  10. 解决ajax无法给js全局变量赋值的问题
  11. uniapp全局传值方式总结
  12. python——迭代器itertools.cycle
  13. 学习笔记:关于科学方法在社会科学中的局限性
  14. gcc动态链接库基本知识 [转]
  15. Interesting Housing Problem HDU - 2426 (KM)
  16. python给矩阵赋值_python 实现矩阵旋转
  17. python chardet库的函数用法
  18. 表单 HTML 模拟登陆界面
  19. 《阵列信号处理及MATLAB实现》绪论、矩阵代数相关内容总结笔记
  20. C++ 工厂模式(Factory 模式)简介与实现

热门文章

  1. win10 文件服务器 群晖,转帖!手把手教您用win10做NAS:搭配emby,VM虚拟群晖,直通......
  2. AlphaGo与蒙特卡罗树搜索
  3. 坑:vuex中的mutations不能使用return获取数据
  4. 禁用传统支持和启用安全引导_如何为Windows 10启用或禁用安全登录
  5. 【Java】两层for循环 break跳出
  6. 【原创】职场:聊聊那些领导没挑明的话
  7. 未来人工智能自主学习网络的构建
  8. jQuery之遍历数组
  9. 软件测试实例-如何测试用户界面登陆过程
  10. 合天——SQL注入实验二