python爬虫学习——bs4
bs4 将一个复杂的html文档转化为一个复杂的树形结构,每个节点都是python对象,所有对象可以分为四种:Tag、NavigableString、BeautifulSoup、Comment
from bs4 import BeautifulSoup
f = open("./htmlDemo1.html","rb")
html = f.read().decode("utf-8")
bs = BeautifulSoup(html,"html.parser")
#print(bs.title)
# print(bs.head)
# print(bs.h1)
#print(type(bs.h1))
#1. Tag 标签及其内容 (只能拿到它所找到的第一个内容)
#print(bs.title.string)
#print(type(bs.title.string))
#2. NavigableString 标签里的内容(字符串)
# print(bs.a.attrs)
# print(bs.p.attrs) #获取标签的属性,并放在字典中
#print(type(bs))
#3. BeautifulSoup 表示整个文档
# print(bs.name)
# print(bs.attrs)
# print(bs)
# print(bs.p.string)
# print(type(bs.p.string))
#4. Comment 是一个特殊的NavigableString,输出的内容不包含注释符号
#文档的遍历
# print(bs.head.contents)
# print(bs.head.contents[1])
#文档的搜索
#1. find_all()
#(1)字符串过滤:会查找与字符串完全匹配的内容
# t_list = bs.find_all("a")
# print(t_list)
#(2)正则表达式搜索:使用search内容来匹配搜索
# import re
# t_list = bs.find_all(re.compile("a"))
# print(t_list)
#(3)方法:传入一个函数(方法),根据函数的要求来查询
# def name_is_exists(Tag):
# return Tag.has_attr("name")
#
# t_list = bs.find_all(name_is_exists)
# # print(t_list)
# for item in t_list:
# print(t_list)
#2. kwargs 参数
# t_list = bs.find_all(class_="hot")
# t_list = bs.find_all(href = "http://baidu.com")
# print(t_list)
#3. text参数
# t_list = bs.find_all(text = "hehehe")
# t_list = bs.find_all(text=["hehehe","苹果"])
# for item in t_list:
# print(item)
#4. limit参数
# t_list = bs.find_all("p",limit=3)
# print(t_list)
#css选择器
# t_list = bs.select("title") #通过标签来查找
# t_list = bs.select("head > title") #通过子标签来查找
t_list = bs.select(".hot ~ .cool")
print(t_list[0].get_text()) #通过兄弟标签来查找
# t_list = bs.select(".hot") #通过类名来查找
# t_list = bs.select("#title1") #通过id来查找
# t_list = bs.select("a[href='http://baidu.com']") #通过属性来查找
for item in t_list:
print(item)
python爬虫学习——bs4的更多相关文章
- python爬虫学习笔记(一)——环境配置(windows系统)
在进行python爬虫学习前,需要进行如下准备工作: python3+pip官方配置 1.Anaconda(推荐,包括python和相关库) [推荐地址:清华镜像] https://mirrors ...
- python爬虫学习01--电子书爬取
python爬虫学习01--电子书爬取 1.获取网页信息 import requests #导入requests库 ''' 获取网页信息 ''' if __name__ == '__main__': ...
- python爬虫学习(1) —— 从urllib说起
0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...
- python爬虫学习 —— 总目录
开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...
- Python爬虫学习:三、爬虫的基本操作流程
本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:三.爬虫的基本操作与流程 一般我们使用Python爬虫都是希望实现一套完整的功能,如下: 1.爬虫目标数据.信息: 2.将 ...
- Python爬虫学习:四、headers和data的获取
之前在学习爬虫时,偶尔会遇到一些问题是有些网站需要登录后才能爬取内容,有的网站会识别是否是由浏览器发出的请求. 一.headers的获取 就以博客园的首页为例:http://www.cnblogs.c ...
- Python爬虫学习:二、爬虫的初步尝试
我使用的编辑器是IDLE,版本为Python2.7.11,Windows平台. 本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:二.爬虫的初步尝试 1.尝试抓取指定网页 ...
- 《Python爬虫学习系列教程》学习笔记
http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己 ...
- python爬虫学习视频资料免费送,用起来非常666
当我们浏览网页的时候,经常会看到像下面这些好看的图片,你是否想把这些图片保存下载下来. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片点击鼠标右键的时候并没有另存为选项,或者你可以通过截图工 ...
- [转]《Python爬虫学习系列教程》
<Python爬虫学习系列教程>学习笔记 http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多. ...
随机推荐
- Qt 给窗口绘制阴影
文章目录 Qt 给窗口绘制阴影 前言 重载`paintEvent`法 QGraphicsDropShadowEffect方法 使用九图拼凑法 九宫格缩放阴影法 Qt 给窗口绘制阴影 前言 最近自定义一 ...
- go 链表操作
链表的特点和初始化 链表的特点 用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的) 结点 结点(node) 数据域 => 存储元素信息 指针域 => 存 ...
- docker搭建本地仓库
环境准备: 服务器:9.134.130.35 私有仓库服务器,运行registry容器 客户端:9.208.244.175 测试客户端,用于上传.下载镜像文件 测试搭建本地仓库 mkdir /dock ...
- 使用键盘控制gazebo小车模型运动
博客地址:https://www.cnblogs.com/zylyehuo/ gazebo小车模型创建详见另一篇博客 博客地址:gazebo小车模型(附带仿真环境) - zylyehuo - 博客园 ...
- Effective Java理解笔记系列-第2条-何时考虑用构建器?
为什么写这系列博客? 在阅读<Effective Java>这本书时,我发现有许多地方需要仔细认真地慢慢阅读并且在必要时查阅相关资料才能彻底搞懂,相信有些读者在阅读此书时也有类似感受:同时 ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx上特色外设XBAR那些事(1)- 初识
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1xxx系列上的XBAR外设. 得益于 Arm Cortex-M 内核的普及,现如今 MCU 厂商遍地开花,只要能取 ...
- 华为od机考2025A卷真题 -寻找重复代码
题目描述与示例 题目 小明负责维护项目下的代码,需要查找出重复代码,用以支撑后续的代码优化,请你帮助小明找出重复的代码. 重复代码查找方法:以字符串形式给出两行代码text1,text2(字符串长度1 ...
- 什么是 Java 中的常量池?
Java 中的常量池 Java 中的常量池(Constant Pool)是用于存放程序中常量(如字符串.数字.类.方法等)的内存区域.常量池的主要作用是提高内存的使用效率和性能,避免重复创建相同的常量 ...
- 如何在Uniapp项目中引入uni_modules中的依赖?
在Uniapp项目中引入uni_modules中的依赖分为以下几种情况: 对于通用组件: 如果你已经通过HBuilderX插件市场安装了某个uni_modules组件,通常只需在页面的.vue文件中按 ...
- 牛!达摩院孵化开源项目,让数字人"活"起来:OpenAvatarChat教你轻松搭建自己的数字人
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 "只需一台普通电脑,就能让数字人像真人一样与你畅聊!" -- OpenA ...