爬虫入门-3.初识BeautifulSoup
一.安装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相关推荐
- 爬虫入门一:BeautifulSoup解析豆瓣即将上映的电影信息
爬虫入门一 一直很想学习一下爬虫,今天忙里偷闲看了一篇教程博客之后开始入门学习,很感谢教程作者的讲解与分享,文末附教程博客链接. BeautifulSoup解析豆瓣即将上映的电影信息 python代码 ...
- python爬虫入门练习:BeautifulSoup爬取猫眼电影TOP100排行榜,pandas保存本地excel文件
传送门:[python爬虫入门练习]正则表达式爬取猫眼电影TOP100排行榜,openpyxl保存本地excel文件 对于上文使用的正则表达式匹配网页内容,的确是有些许麻烦,替换出现任何的差错都会导致 ...
- Python爬虫入门8:BeautifulSoup获取html标签相关属性
☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一. 引言 在上节<https://blog.csdn.net/LaoYuanPyt ...
- python爬虫入门四:BeautifulSoup库(转)
正则表达式可以从html代码中提取我们想要的数据信息,它比较繁琐复杂,编写的时候效率不高,但我们又最好是能够学会使用正则表达式. 我在网络上发现了一篇关于写得很好的教程,如果需要使用正则表达式的话,参 ...
- 【网络爬虫入门04】彻底掌握BeautifulSoup的CSS选择器
[网络爬虫入门04]彻底掌握BeautifulSoup的CSS选择器 广东职业技术学院 欧浩源 2017-10-21 1.引言 目前,除了官方文档之外,市面上及网络详细介绍BeautifulSoup ...
- 【网络爬虫入门01】应用Requests和BeautifulSoup联手打造的第一条网络爬虫
[网络爬虫入门01]应用Requests和BeautifulSoup联手打造的第一条网络爬虫 广东职业技术学院 欧浩源 2017-10-14 1.引言 在数据量爆发式增长的大数据时代,网络与用户的沟 ...
- 爬虫入门教程⑧— BeautifulSoup解析豆瓣即将上映的电影信息
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时 ...
- 硬核来袭!!!一篇文章教你入门Python爬虫网页解析神器——BeautifulSoup详细讲解
文章目录 一.BeautifulSoup介绍 二.安装 三.bs4数据解析的原理 四.bs4 常用的方法和属性 1.BeautifulSoup构建 1.1 通过字符串构建 1.2 从文件加载 2.Be ...
- Python爬虫入门教程:博客园首页推荐博客排行的秘密
1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...
最新文章
- gentoo 安装opencv
- [CentOS7] 常用工具 之 差异备份工具 rdiff-backup
- 使用过滤器监控网站流量
- nslookup type值_nslookup查询
- when is SAP UI5 url hash changed in browser
- FZU 1914 Funny Positive Sequence
- 解决网页中Waiting (TTFB)数据加载过慢的问题
- python做副业_学习Python可以做哪些副业,你是不是感觉自己错过了一个亿?
- 拦截导弹(CDQ分治,DP)
- Open3D+vs配置以及使用教程
- Redis设计与实现-集群
- java判断日期是否是本月_Java写一个函数判断一个日期是否在本月之内
- Netty工作原理最详细分析
- Spring框架学习总结(上)
- UNI-APP实现扫描二维码
- win10电源设置选项无效--高级电源选项
- Monkey测试个人笔记
- 什么是SaaS模式 - SaaS模式的视频会议系统
- Android百度地图之位置定位和附近查找代码简单实现 (上)
- BAPI_PO_CREATE1--单价增大10倍问题
热门文章
- STM32项目中一种在线升级/应用升级OTA-IAP设计方案
- Android学习问题:关于AlertDialog中自定义布局带有的EditText无法弹出键盘
- mysql独有的函数_数据库之MySQL函数(一)
- CodeForces - 894E Ralph and Mushrooms (强连通缩点+dp)
- POJ :3614-Sunscreen
- 为什么objc_msgSend必须用汇编实现
- 程序编译时书写Makefile注意事项一例
- [调试]Asp.Net常见问题
- 断点续传和下载原理分析
- skywalking oap-server 域名配置