一.安装BeautifulSoup

BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.BeautifulSoup配合Request使用,能大大提高爬虫效率。

pip install BeautifulSoup

二.常见操作

from bs4 import BeautifulSouphtml_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
# # 将一段文档传入BeautifulSoup 的构造方法,就能得到一个文档的对象, 可以传入一段字符串或一个文件句柄
soup1 = BeautifulSoup("<html>data</html>", 'lxml')
print(soup1)
soup = BeautifulSoup(html_doc, "lxml")
print(soup.title)
print(soup.head)
# 通过点取属性的方式只能获得当前名字的第一个tag:
print(soup.a)
# 如果想要得到所有的<a>标签,或是通过名字得到比一个tag更多的内容的时候,就需要用到 Searching the tree 中描述的方法,比如: find_all()
print(soup.find_all('a'))  # return List
print(soup.find(id='link2'))
# 从文档中找到所有<a>标签的链接
for link in soup.find_all('a'):print(link.get('href'))
# # 从文档中获取所有文字内容
print(soup.get_text())
'''
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:Tag , NavigableString , BeautifulSoup , Comment .
'''
soup = BeautifulSoup('<b class="boldest">Extremely bold</b>', 'lxml')
tag = soup.b
print(tag.attrs)  # print(tag['class']) 两者一样
print(tag.string)  # 文本
# tag中包含的字符串不能编辑,但是可以被替换成其它的字符串,用 replace_with() 方法:
tag.string.replace_with("No longer bold")
print(tag.string)
# '''遍历文档树'''
soup = BeautifulSoup(html_doc, "lxml")
# # .string
# # 如果tag只有一个 NavigableString 类型子节点,那么这个tag可以使用 .string 得到子节点:
head_tag = soup.head
print(head_tag.contents)
title_tag = head_tag.contents[0]
print(title_tag)
print(title_tag.contents)
print(title_tag.string)
# 如果tag包含了多个子节点,tag就无法确定 .string 方法应该调用哪个子节点的内容, .string 的输出结果是 None :
# 那么可以使用 .strings 来循环获取
#  ----- find_all()参数注解------
#  find_all( name , attrs , recursive , text , **kwargs )
#  find_all() 方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件
alist = soup.find_all("a", class_="sister")
print(alist)
# 1.通过 text 参数可以搜搜文档中的字符串内容.与 name 参数的可选值一样, text 参数接受 字符串 , 正则表达式 , 列表, True .
print(soup.find_all(text="Lacie"))
# 2.limit 参数
#   find_all() 方法返回全部的搜索结构,如果文档树很大那么搜索会很慢.如果我们不需要全部结果,可以使用 limit 参数限制返回结果的数量.
#   当搜索到的结果数量达到 limit 的限制时,就停止搜索返回结果.
print(soup.find_all("a", limit=2))
# 3.recursive 参数
#  调用tag的 find_all() 方法时,Beautiful Soup会检索当前tag的所有子孙节点,如果只想搜索tag的直接子节点,
#  可以使用参数 recursive=False .
# 4.name 参数¶
#       name 参数可以查找所有名字为 name 的tag,字符串对象会被自动忽略掉.
soup.find_all("a")
# 5.keyword 参数
# 如果一个指定名字的参数不是搜索内置的参数名,搜索时会把该参数当作指定名字tag的属性来搜索,如果包含一个名字为 id 的参数,
#  Beautiful Soup会搜索每个tag的”id”属性.
soup.find_all(id='link2')

  

转载于:https://www.cnblogs.com/min-R/p/10506612.html

爬虫入门-3.初识BeautifulSoup相关推荐

  1. 爬虫入门一:BeautifulSoup解析豆瓣即将上映的电影信息

    爬虫入门一 一直很想学习一下爬虫,今天忙里偷闲看了一篇教程博客之后开始入门学习,很感谢教程作者的讲解与分享,文末附教程博客链接. BeautifulSoup解析豆瓣即将上映的电影信息 python代码 ...

  2. python爬虫入门练习:BeautifulSoup爬取猫眼电影TOP100排行榜,pandas保存本地excel文件

    传送门:[python爬虫入门练习]正则表达式爬取猫眼电影TOP100排行榜,openpyxl保存本地excel文件 对于上文使用的正则表达式匹配网页内容,的确是有些许麻烦,替换出现任何的差错都会导致 ...

  3. Python爬虫入门8:BeautifulSoup获取html标签相关属性

    ☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一. 引言 在上节<https://blog.csdn.net/LaoYuanPyt ...

  4. python爬虫入门四:BeautifulSoup库(转)

    正则表达式可以从html代码中提取我们想要的数据信息,它比较繁琐复杂,编写的时候效率不高,但我们又最好是能够学会使用正则表达式. 我在网络上发现了一篇关于写得很好的教程,如果需要使用正则表达式的话,参 ...

  5. 【网络爬虫入门04】彻底掌握BeautifulSoup的CSS选择器

    [网络爬虫入门04]彻底掌握BeautifulSoup的CSS选择器 广东职业技术学院  欧浩源 2017-10-21 1.引言 目前,除了官方文档之外,市面上及网络详细介绍BeautifulSoup ...

  6. 【网络爬虫入门01】应用Requests和BeautifulSoup联手打造的第一条网络爬虫

    [网络爬虫入门01]应用Requests和BeautifulSoup联手打造的第一条网络爬虫 广东职业技术学院 欧浩源 2017-10-14  1.引言 在数据量爆发式增长的大数据时代,网络与用户的沟 ...

  7. 爬虫入门教程⑧— BeautifulSoup解析豆瓣即将上映的电影信息

    Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时 ...

  8. 硬核来袭!!!一篇文章教你入门Python爬虫网页解析神器——BeautifulSoup详细讲解

    文章目录 一.BeautifulSoup介绍 二.安装 三.bs4数据解析的原理 四.bs4 常用的方法和属性 1.BeautifulSoup构建 1.1 通过字符串构建 1.2 从文件加载 2.Be ...

  9. Python爬虫入门教程:博客园首页推荐博客排行的秘密

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

最新文章

  1. gentoo 安装opencv
  2. [CentOS7] 常用工具 之 差异备份工具 rdiff-backup
  3. 使用过滤器监控网站流量
  4. nslookup type值_nslookup查询
  5. when is SAP UI5 url hash changed in browser
  6. FZU 1914 Funny Positive Sequence
  7. 解决网页中Waiting (TTFB)数据加载过慢的问题
  8. python做副业_学习Python可以做哪些副业,你是不是感觉自己错过了一个亿?
  9. 拦截导弹(CDQ分治,DP)
  10. Open3D+vs配置以及使用教程
  11. Redis设计与实现-集群
  12. java判断日期是否是本月_Java写一个函数判断一个日期是否在本月之内
  13. Netty工作原理最详细分析
  14. Spring框架学习总结(上)
  15. UNI-APP实现扫描二维码
  16. win10电源设置选项无效--高级电源选项
  17. Monkey测试个人笔记
  18. 什么是SaaS模式 - SaaS模式的视频会议系统
  19. Android百度地图之位置定位和附近查找代码简单实现 (上)
  20. BAPI_PO_CREATE1--单价增大10倍问题

热门文章

  1. STM32项目中一种在线升级/应用升级OTA-IAP设计方案
  2. Android学习问题:关于AlertDialog中自定义布局带有的EditText无法弹出键盘
  3. mysql独有的函数_数据库之MySQL函数(一)
  4. CodeForces - 894E Ralph and Mushrooms (强连通缩点+dp)
  5. POJ :3614-Sunscreen
  6. 为什么objc_msgSend必须用汇编实现
  7. 程序编译时书写Makefile注意事项一例
  8. [调试]Asp.Net常见问题
  9. 断点续传和下载原理分析
  10. skywalking oap-server 域名配置