爬虫 之 BeautifulSoup

from import BeautifulSoup
html = '~~~~~~~~~~~~~'
soup = BeautifulSoup(html, 'lxml')
print(soup.title.string)

简单情况   生成soup对象,用该对象选择节点,然后提取属性值或者文本值,这就是这篇博客的目的了

 

 

获取直接子节点:

print(soup.p.contents)

 

获得子孙节点:  返回为生成器类型

for i, child in enumerate(soup.p.descendants):
    print(i,child)

 

获得父节点:

print(soup.p.parent)# 获得的是p 的直接父节点

print(soup.p.parents) #获得的是祖先系列的所有父节点

 

获取兄弟节点:

print(soup.p.next_sibling)#后面的一个兄弟
print(soup.p.previous_sibling)#前面的一个兄弟
print(list(enumerate(soup.p.next_siblings)))#后面的所有兄弟
print(list(enumerate(soup.p.previous_siblings)))#前面的所有兄弟

 

单节点:

如何取文本:

print(soup.p.string)#只会选择第一个找到的p节点,然后输出其本文

如何取属性值:

print(soup.p['class'])#只会找到第一个p节点,输出器 class属性的值

 

多节点:

#取文本
print(list(soup.p.parents)[0])#从里至外 算顺序


#取属性
print(list(soup.p.parents)[0].attrs['class'])
print(list(soup.p.parents)[0]['class'])

 

 

补:还可以用find_all(name, attrs, text )方法来找对应的节点(可以找到多个)

 

name: 利用节点名

print(soup.find_all(name='ul'))  #通过节点名名来找节点

for ul in soup.find_all(name='ul'):
    print(ul.find_all(name='li'))   #这种通过节点名字来找节点的方法还可以嵌套

 

attrs:利用属性

print(soup.find_all(attrs={ 'id':'list' })) # 属性名与值的键值对 用 字典来表示

print(soup.find_all(id='list'))  #这是简便的写法

#当然了,由于class是python关键字,所以这里特殊为 class_
print(soup.find_all(class_='color'))

 

text: 利用文本值,   text 可以为文本 或 正则表达式

print(soup.find_all(text='hello'))

print(soup.find_all(text= re.compile('link')))

 

补:find(name, attrs, text) 方法和find_all()一样使用,不过,其只能返回第一个匹配的节点

一样的使用方式,但是查询的范围不同:(参数条件都是一样的使用)

find_parents():返回所有满足条件的祖先节点

find_parent():返回满足条件直接父节点

 

find_next_siblings() 、find_next_sibling() :返回后面的满足条件所有兄弟节点、  返回后面的满足条件第一个兄弟节点

 

find_previous_siblings()、find_previous_sibling():返回前面的满足条件所有兄弟节点、  返回前面的满足条件第一个兄弟节点

 

补:用css选择器找相应的节点:   只要使用select()方法就好了

print(soup.select('ul li')) # 找ul标签下的所有li节点
print(soup.select('#list .element')) #找id选择器list 下的 其中类选择器为element的节点


#当然了,也可以嵌套的
for ul in soup.select('ul'):
    print(ul.select('li'))      #找到所有ul下的   所有li节点

 

 

ok,真正结束了

 

 

88

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值