爬虫学习--BeautifulSoup库

在这里插入图片描述

在这里插入图片描述

from bs4 import BeautifulSoup
html_doc = """
<!DOCTYPE html>
<!--STATUS OK-->
<html>
 <head>
  <meta content="text/html;charset=utf-8" http-equiv="content-type"/>
  <meta content="IE=Edge" http-equiv="X-UA-Compatible"/>
  <meta content="always" name="referrer"/>
  <link href="https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css" rel="stylesheet" type="text/css"/>
  <title>百度一下,你就知道 </title>
 </head>
 <body link="#0000cc">
  <div id="wrapper">
   <div id="head">
    <div class="head_wrapper">
     <div id="u1">
      <a class="mnav" href="http://news.baidu.com" name="tj_trnews">
       新闻 </a>
      <a class="mnav" href="https://www.hao123.com" name="tj_trhao123">
       hao123 </a>
      <a class="mnav" href="http://map.baidu.com" name="tj_trmap">
       地图 </a>
      <a class="mnav" href="http://v.baidu.com" name="tj_trvideo">
       视频 </a>
      <a class="mnav" href="http://tieba.baidu.com" name="tj_trtieba">
       贴吧 </a>
      <a class="bri" href="//www.baidu.com/more/" name="tj_briicon" style="display: block;">
       更多产品 </a>
     </div>
    </div>
   </div>
  </div>
 </body>
</html>
"""

# 构造解析树
soup = BeautifulSoup(html_doc, "html.parser")
# 获取解析树的文本内容
print(soup.get_text())
# 缩进格式
print(soup.prettify())

# 获取head标签的所有内容
print(soup.head)
# 获取head中meta标签的所有内容列表形式
print(soup.head.find_all('meta'))
# 获取title标签的所有内容
print(soup.title)
# 获取title标签的文本内容
print(soup.title.string)
# 获取head中link标签的中的链接
print(soup.head.link.get('href'))
print(soup.head.link['href'])


# 获取body标签的所有内容
print(soup.body)

# 获取所有的 a 标签的 href 属性
for link in soup.find_all('a'):
    print(link.get('href'))
# 获取所有的 a 标签的文本值
for text in soup.find_all('a'):
    print(text.get_text)
# 获取id="u1"的内容
print(soup.find(id="u1"))


# BeautifulSoup4四大对象种类

# 1.Tag类
# Tag通俗点讲就是HTML中的一个个标签
# 对于 Tag,它有两个重要的属性,是 name 和 attrs:
print(soup.head.name)
# 第一个 a 标签的所有属性打印输出了出来,得到的类型是一个字典。
print(soup.a.attrs)
# 得到第一个标签的class
print(soup.a.get('class'))
print(soup.a['class'])
# 可以对这些属性和内容等等进行修改
soup.a['class'] = 'newclass'
print(soup.a)
# 对属性进行删除
del soup.a['class']
print(soup.a)

# 2.NavigableString
# NavigableString:获取标签内部的文字用 .string 即可
print(soup.title.string)
print(type(soup.title.string))

# 3.BeautifulSoup
# BeautifulSoup:表示的是一个文档的内容。
print(type(soup))
print(soup.name)

# 4.Comment
# Comment:是一个特殊类型的 NavigableString 对象,其输出的内容不包括注释符号。



# css选择器
# 一般我们大规模查找节点使用find_all是比较快速的,
# 但是如果遇到查找比较精确的节点,比较推荐的是soup.select
# 利用CSS选择器通俗易懂的选择方法能够更为精准的定位想要获得的元素
# 参考文献https://www.runoob.com/cssref/css-selectors.html

# 1.通过标签名查找,返回列表
# p	选择所有<p>元素
print(soup.select('a')) # 与print(soup.find_all('a'))相同

# 2.通过类名查找
# .intro选择所有class="intro"的元素
print(soup.select('.mnav'))

# 3.通过id查找
#firstname选择所有id="firstname"的元素
print(soup.select('#u1'))

# 4.组合查找
# div,p	选择所有<div>元素和<p>元素
# div p	选择<div>元素内的所有<p>元素
# div>p	选择所有父级是 <div> 元素的 <p> 元素
# div+p	选择所有紧接着<div>元素之后的<p>元素
# print(soup.select('div .bri'))

# 5.属性查找
# [target]	选择所有带有target属性元素	2
# [target=-blank]	选择所有使用target="-blank"的元素
print(soup.select('a[class="mnav"]'))
print(soup.select('a[href="http://tieba.baidu.com"]'))
print(soup.select('div[id="u1"]'))

# 6.获取内容
t_list = bs.select("title")
print(soup.select('title')[0].get_text())
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值