Python网络爬虫——BeautifulSoup4库的使用 使用库来获取html页面, 并将其转换成字符串之后, 需要更进一步地按照html页面的格式去进行解析工作, 以便能够把那些有用的信息给提取出来。这个库, 同时也是被叫做bs4库的在之后都会使用简写, 它主要就是用来解析和处理html以及xml的。1.调用在bs4这个库里面, 最核心、最主要的部分就是那个叫作bs的那个类了, 因为每一个被创建出来的实例化对象, 其地位都相当于一个完整的html页面, 这是需要搞清楚的关键点。需要采用from导入的方式把bs类引进来, 同时通过一个括号的形式来创建一个属于bs类的对象。代码内容如下所示。import requestsfrom bs4 import BeautifulSouprrequests.get(https://www.baidu.com/)r.encodingutf-8soupBeautifulSoup(r.text)print(type(soup))运行结果2.常用属性创建的对象, 它是一个树形结构, 它把html页面里的每一个Tag标签元素都包含在里面了, 你可以通过点点号这个形式, 来获取这些元素信息。通常所接触到的属性, 一般是指下面这几个东西。headhtml页面内容title在html页面里面的标题部分, 其实是由对应的标记来指定的。bodyhtml页面内容p:在网页页面中排为第一的那个。内容html页面里面所有展现出来给网络浏览器看的字符串, 也就是指那些标签里面的内容。在网页中所有能够直接显示出来而且内容不是空的文本字符。紧接着咱们就来试试对百度的标语“百度一下, 你就知道”进行抓取操作。我们首先通过来建立请求, 可以通过查看源代码找到对应这部分。如下所示因此呢, 只需要直接去调用对应的标签, 这样就可以了。代码如下import requestsfrom bs4 import BeautifulSouprrequests.get(https://www.baidu.com/)r.encodingutf-8soupBeautifulSoup(r.text)titlesoup.titleprint(title)结果如图所示3.标签常用属性在bs4框架里面, 每一个标签都是一个对象, 这个对象被叫做tag对象, 就拿糯米这个例子来说, 它常见的结构是下面的这个样子:糯米其中, 那个尖括号里面包含着的名字被叫做name, 其余那些项目都归属于attrs这个类别, 而夹在尖括号中间所存在的那些文字内容则代表着。因此, 大家平常会看到的标签属性, 主要就是被分成了4种。name就是那个叫字符串的东西, 还有那些标签的名称。attrs字典, 也就是那个包含了原来页面的标签的所有属性的东西, 比方说像 href 这样的属性。在列表以及那个标签下面,包含了所有属于子标签的内容。包括字符串以及标记里面所涉及的那一部分文本内容, 这些都是在网页上面能够直接看到的那种实实在在的文字表达。因为现在的人都知道, 在html这个玩意儿里面, 一个标签可以把另外一些标签给嵌套进去, 所以呢, 返回的东西必须去遵照下面提到的那些个原则。如果在那个标签内部没有其他类型的标签存在, 就会将属性所返回的那个部分的内容直接提取出来。②假如说在一个标签的内部它还有另外的标签, 但是情况只有一个, 那么我们返回那个位置最靠里的标签的内容。③要是内部存在的标签嵌套超过了1层, 就把结果当成无。我们不妨继续使用百度作为一个示例, 那么对应地, 针对我们需要定位那个排在最前面的具体标记, 所涉及到的代码写法应该是下面这样的这个样子:import requestsfrom bs4 import BeautifulSouprrequests.get(https://www.baidu.com/)r.encodingutf-8soupBeautifulSoup(r.text)print(soup.a.string)结果如图所示4.调用那个名为find的方法, 并且再去调另外一个没有名字的括号。在html里面, 同一个特标签会有很多内容, 比如百度首页一共有13处, 但值返回第一处。所以在这一种情况之中, 是需要通过查找方法以及另一个相似的方法来实行寻找操作的, 这两个办法都具备这样的特性, 也就是都会对html文档进行遍历, 然后根据给定的条件去返回对应的内容。以下就是具体的使用方法。.name,attrs,,,limit以标签名字进行搜索, 名字用字符串类型表示。在attrs这个地方, 大家要按照标签的属性来进行搜索, 这时候需要列出属性的名字以及对应的值, 整体来说要用json方法来表示。设置查找层次的时候, 如果是只查找当前标签的下一层的话, 就使用false。根据关键字符进行查找属性内容的过程, 是以等号作为开始的标志性符号来实施的。限制条件用于规定返回结果的数量, 在没有进行特别设置的情况下默认返回全部数据。至于找那个东西的办法和使用方法是一模一样的, 这就跟括号里的写法没有区别。.name,attrs,,它们的区别在于, find函数仅仅搜索并返回第一个匹配到的结果, 而另一个方法则会把所有符合条件的结果全部返回。我们接下来尝试使用括号括号里的信息作为依据, 去把那些上面包含“百度”两个字的、叫做标签的这种东西全都找出来。第一步, 需要去调用那个名叫 re 的库, 要知道 re 它是一个标准库, 它是可以被用来针对字符串里面的内容进行检索操作的。因此, 具体的程序代码展示如下所示import requestsimport refrom bs4 import BeautifulSouprrequests.get(https://www.baidu.com/)r.encodingutf-8soupBeautifulSoup(r.text)wsoup.find_all(stringre.compile(百度))print(w)结果如下到了最后这个环节, 小编想要跟大家说一说心里话, 其实我这个人是一名开发工程师, 手里头整理出来了整整一套最新的用来帮助大家进行系统学习的教程资料, 如果你特别想要得到这些资料的化, 那就赶紧去关注一下小编, 然后再给小编发一条私信消息, 在对话框里敲上这两个数字, 也就是“01”, 这样的话就可以了, 小编在这里衷心希望这些东西能够为你带来一些实实在在的帮助。