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的更多相关文章

  1. python爬虫学习笔记(一)——环境配置(windows系统)

    在进行python爬虫学习前,需要进行如下准备工作: python3+pip官方配置 1.Anaconda(推荐,包括python和相关库)   [推荐地址:清华镜像] https://mirrors ...

  2. python爬虫学习01--电子书爬取

    python爬虫学习01--电子书爬取 1.获取网页信息 import requests #导入requests库 ''' 获取网页信息 ''' if __name__ == '__main__': ...

  3. python爬虫学习(1) —— 从urllib说起

    0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...

  4. python爬虫学习 —— 总目录

    开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...

  5. Python爬虫学习:三、爬虫的基本操作流程

    本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:三.爬虫的基本操作与流程 一般我们使用Python爬虫都是希望实现一套完整的功能,如下: 1.爬虫目标数据.信息: 2.将 ...

  6. Python爬虫学习:四、headers和data的获取

    之前在学习爬虫时,偶尔会遇到一些问题是有些网站需要登录后才能爬取内容,有的网站会识别是否是由浏览器发出的请求. 一.headers的获取 就以博客园的首页为例:http://www.cnblogs.c ...

  7. Python爬虫学习:二、爬虫的初步尝试

    我使用的编辑器是IDLE,版本为Python2.7.11,Windows平台. 本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:二.爬虫的初步尝试 1.尝试抓取指定网页 ...

  8. 《Python爬虫学习系列教程》学习笔记

    http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己 ...

  9. python爬虫学习视频资料免费送,用起来非常666

    当我们浏览网页的时候,经常会看到像下面这些好看的图片,你是否想把这些图片保存下载下来. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片点击鼠标右键的时候并没有另存为选项,或者你可以通过截图工 ...

  10. [转]《Python爬虫学习系列教程》

    <Python爬虫学习系列教程>学习笔记 http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多. ...

随机推荐

  1. git push解决 error src refspec master does not match anyerror

    前言 git push origin master git push 时报错: error: src refspec master does not match anyerror: failed to ...

  2. Golang 入门 : 创建第一个Go程序

    创建第一个Go程序 新建一个 helloworld.go 文件,写入以下程序 package main import ( "fmt" ) // 一个函数声明 /* 一个main函数 ...

  3. DEF4Delphi-master的安装

    保姆教程 d2007的TWEBbrowser因为用的太老的IE内核.现在的浏览器上的功能呈现就卡住了. 那么DEF4Delphi效果非常好. 如何安装后成功运行.很简单.直接去:https://git ...

  4. SpringBoot启动方法分析

    SpringBoot启动run方法分析 1.场景引入 在项目启动的时候,有时候我们需要在启动的时候,执行一些逻辑. 比如说,项目启动的时候,我想把一些热门商品的数据加载到缓存中去: 比如说,自定义了一 ...

  5. symfony或doctrine报错:Object of class App\Entity\* could not be converted to string

    报错: Catchable Fatal Error: Object of class App\Entity\ProjectType could not be converted to string 版 ...

  6. 在我用了几个月VSCode的C++及其衍生功能后的感受

    VSCode优点槽点大盘点 优点 衍生功能是真的多,几乎所有功能在扩展市场里面都能得到.而且无需配置环境啊 自定义功能是真的方便,可以自定义.exe存放位置或者名称,打下;键就能够一键美化代码等等 美 ...

  7. xna 渲染3d图片

    我们在做一个3d显示的时候为了突出模型的某些部位以及更好的区别某些模块我们需要渲染各种不同的颜色来体现, 下面代码演示: public void loade() { spriteBatch = new ...

  8. Promise 这个新 API 真香!

    Hey, 我是 沉浸式趣谈 本文首发于[沉浸式趣谈],我的个人博客 https://yaolifeng.com 也同步更新. 转载请在文章开头注明出处和版权信息. 如果本文对您有所帮助,请 点赞.评论 ...

  9. Tomcat无法启动报错:'Starting Tomcat v9.5 Server at localhost' has encountered a problem

    错误提示 控制台提示 严重: A child container failed during start java.util.concurrent.ExecutionException: org.ap ...

  10. PLSQL中&符号处理

    在SQL语句中的字符串中出现了&符号,当执行的时候会被认为是参数需要传递,如update product set brand = 'D&G'; 解决办法是把语句改为:update pr ...