学习Python爬虫第一步,Bs4库

首先是安装BS4库
因为Python的pip真的很方便,所以一般不出意外,只需要一个pip就足以完成一个库的安装。

pip install beautifulsoup4
名字很长不要记错名字呦。

想要利用爬虫获得我们想要的内容,就一定要学会一个解析HTML的库。
我们总不能用正则表达式,匹配出我们需要的内容,那任务量一定是巨大的,繁琐的,很少有人去那么做,除非你就是需要这个网页中特定的元素。

怎么使用BS4库?
Bs4库和有些库还有一些不同,像我们学习爬虫一定要学习的requests库,我们只需要安装好之后引入就可以。

import requests
但是Bs4库还有一些不同,虽然我们是安装的beaifulsoup4,但是引用的时候要这样引用:

from bs4 import BeuautifulSoup
学习使用BeautifulSoup
BeautifulSoup就是用来解析HTML源代码,然后方便我们拿到想要的内容。
BeautifulSoup有四种解析方式,我们只讲一种,因为其他三种解析方式,要么需要额外安装,要么就是慢,所以我们选择适中稳定,方便的html.parser。

抓取标签
我只讲解一些常用到的获取标签的方式。
首先贴上一个HTML示例。

我的第一个BeautifulSoup使用

这是一个通过class抓取到的内容

这是一个通过id抓取到的消息

这是一个通过标签名抓取到的消息

接下来我们就对这个html内容进行解析。
首先先对html进行解析(也可以理解为,将html代码转换为BeautifulSoup可以操作的类型)
我们先用一个变量来保存这个html源码

Html = """

我的第一个BeautifulSoup使用

这是一个通过class抓取到的内容

这是一个通过id抓取到的消息

这是一个通过标签名抓取到的消息

标签内容

"""
这个变量保存html源码之后我们就要来解析这段源码

Soup = BeautifulSoup(Html, "html.parser")
这里需要两个参数,第一个Html就是我们刚才在变量中存储的html源码,这个参数必须是str类型,第二个参数是解析的方式,我们只使用html.parser所以这个参数就是死的,不会改变的,记住就可以了。
当我们获得BeautifulSoup的返回值,也就是我们现在这个Soup,我们想要获得HTML的某个内容就是使用这个Soup变量,//Soup是一个BS4中的一个类,这个就不提了。

怎么去找到某个元素的标签
BeautifulSoup提供了很多的查找方式,我们在这里只讲几个常用的查找方式。

第一种查找方式
示例比如说我们要查询"这是一个通过class抓取到的内容"这一段内容的话可以使用:

print(Soup.body.p.string)
因为Soup是代表整个html,所以在Soup下的body标签中的第一个p标签的string,string就是标签的内容,就会获得"这是一个通过class抓取到的内容"这个内容,这是一种根据标签的上下级关系来查找的,并不是很常用。

什么时候有用呢?
比如说我们要获得一个html的title元素。

print(Soup.title.string)
就会输出title的内容。
在这种情况下使用就会很方便

第二种查找方式
find和find_all
find查找只能查找符合条件的一个标签。
find_all可以查找符合条件的所有标签。
根据标签中的class要查找标签

例如说根据class查找
查找我们html源码中唯一一个拥有class的标签

ClassTag = Soup.find(class_="classtext")
这个参数class_是因为python中有类,类的关键字是class,所以用了class_代替了class。
find查找到class等于"classtext"的标签,如果我们想获得ClassTag的内容

print(ClassTag.string)
就可以输出ClassTag的内容,.string对任何标签都适用。
也可以获取标签的属性
比如说输出标签的class属性

print(ClassTag["class"])
获得标签的任意属性都是使用这种方式,Tag["xxx"]获得Tag的xxx属性。

根据标签内容查找

Soup.find("p", text="标签内容")
通常find和find_all的第一个参数是字符串类型的时候,就是想要查找的标签名,例如这一段代码,就是要查找p标签,查找某个p标签text的内容是"标签内容"的标签。如果没有找到就会返回None。
一般我们只会用到id内容查询和class内容查询。
接下来我们示例查找那个id等于"idtext"的p标签。

Soup.find("p", id="idtext")
获得id="text"的标签。

第三种查找方式
这种查找方式是一种全能的方式,可以搜索任意元素的标签。
是使用attrs参数
示例

Soup.find("p", attrs={"id":"idtext"})
根据字典键值对来查询标签,attrs就是标签属性名对应属性内容来查找。这里符合条件的标签必须符合id="idtext"这个条件。

attrs={"class":"classtext"}
这里查找到的标签,必须符合class="classtext"条件。

find和find_all的区别
find查找到的标签,就算有很多标签都符合条件,也只会查找到第一条。
find_all查找到的标签,是所以符合条件的所有标签。

刘傲天 Qq:1151172004
虽然不会有人转载但还是声明,转载声明出处,并发邮箱提醒本人,[email protected]
如有错误还请联系
转发QQ:1539747235
邮箱:[email protected]
本文基于《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
文章链接:https://www.allsrc.cn/requests/BeautifulSoup.html (转载时请注明本文出处及文章链接)

原文地址:https://www.cnblogs.com/wlke/p/8460351.html

时间: 2024-10-08 17:07:28

学习Python爬虫第一步,Bs4库的相关文章

Python爬虫入门——利用bs4库对HTML页面信息进行遍历读取

内容整理自中国大学MOOC——北京理工大学-蒿天-基于bs4库的HTML页面遍历方法 我们使用如下链接作为实验对象 https://python123.io/ws/demo.html 页面信息如下 利用requests库爬取出网页的HTML完整代码 1 import requests 2 r = requests.get("http://python123.io/ws/demo.html") 3 demo = r.text 4 print(demo) 网页内容如下 熟悉HTML页面架构

【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验

一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对IP的检测.本文介绍的是利用Redis数据库实现的分布式爬虫,Redis是一种常用的菲关系型数据库,常用数据类型包括String.Hash.Set.List和Sorted Set,重要的是Redis支持主从复制,主机能将数据同步到从机,也就能够实现读写分离.因此我们可以利用Redis的特性,借助req

Python爬虫——第一个小爬虫01

Python小爬虫——贴吧图片的爬取 在对Python有了一定的基础学习后,进行贴吧图片抓取小程序的编写. 目标: 首先肯定要实现图片抓取这个基本功能 然后要有一定的交互,程序不能太傻吧 最后实现对用户所给的链接进行抓取 一.页面获取 要让python可以进行对网页的访问,那肯定要用到urllib之类的包.So先来个 import urllib urllib中有 urllib.urlopen(str) 方法用于打开网页并返回一个对象,调用这个对象的read()方法后能直接获得网页的源代码,内容与

关于在学习python爬虫时的学习记录

最近学习python3爬虫,看的是这位博主的博客,不得不说,是真的厉害,通俗易懂^?_?^ 我要学习的还有很多-从基本的python知识,我就被难倒了- 哎,记录下我的盲点- 花了近一个钟头测试出来的结果. 在爬取相关的html时,text ≠ text[0] 后者是正确的.我一直以为不加的效果也是一样的结果,在我理解看来就是从头开始的,即从0到尾的所有相关的内容,实际上我的理解与相关的python基础不谋而和,可能是爬虫就需要如此的?我就默认好了- 在python中的方法后面的()是不可省去的

Python爬虫入门之三urllib库的基本使用

前言 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地.在Python中有很多库可以用来抓取网页,我们先学习urllib. 注:此博客开发环境为python3 urlopen 我们先来段代码: # urllib_urlopen.py # 导入urllib.request import urllib.request # 向指定的url发送请求,并返回服务器响应的类文件对象 response = urllib.request.urlopen("http://www.bai

1.python的第一步

学习python也有一段时间了,自认为基本算是入门了,想要写一些博客进行知识的汇总的时候.却发现不知道该从何说起了,因为python这门语言在语法上其实并不难,关键在于如何建立程序员的思维方式,而对于初学编程的人来说,恰恰很难建立这种思想,单纯的硬背各种语法效果并不好.所以我的博客主要是将自己一些理解分享给大家,而这些理解我并不能保证一定正确,如果后期发现有什么错误的地方的话,我也会做修改,主要是供参考学习之用,而对于语法主要是总结一下,所以在语法部分会大量参考别人的文章,可能会出现很多和别人重

Python爬虫入门之Urllib库的高级用法

1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意如下,比如知乎,点登录之后,我们会发现登陆之后界面都变化了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次性就加载完成的,实质上是执行了好多次请求,一般是首先请求HTML文件,然后加载JS,CSS 等等,经过多次

学习python的第一个小目标:通过requests+xlrd实现简单接口测试,将测试用例维护在表格中,与脚本分开。

小白的学习方式:通过确定一个小目标来想办法实现它,再通过笔记来加深印象. 面对标题中的小目标我陷入了思考....嗯,首先实现利用xlrd库来取出想要的用例 首先用表格准备好用例,如图下: 先试下取number为1的一行用例试试: 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 import xlrd 4 5 xlsurl = r"D:\RequestAPI.xlsx" # 表格文件路径 6 rqapi = xlrd.open_wo

Python爬虫利器:BeautifulSoup库

Beautiful Soup parses anything you give it, and does the tree traversal stuff for you. BeautifulSoup库是解析.遍历.维护 "标签树" 的功能库(遍历,是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问).https://www.crummy.com/software/BeautifulSoup BeautifulSoup库我们常称之为bs4,导入该库为:from bs4 im