
一.前言在学习爬虫技术这个环节当中, 数据提取是一个非常常见的任务。通常情况下,我们会使用正则表达式或者是lxml这些方式来提取到我们想要的信息。今天我们要为您介绍一个全新的库。通过运用这个库的话, 您可以方便地实现从HTML文件或者是XML文件中提取出您所需求的信息这样的功能。请问具体指的是什么呢?这是一个专门用来解释HTML和XML文档的工具库。通过这个工具, 你能够非常方便地去提取那些想要的信息, 并且速度还比较快, 结果也足够稳定可靠。它还支持你使用一种比较简单易懂的指令形式, 以此来查找网页内容、更改页面数据或者在复杂的网络结构里来回穿梭浏览。二.基本用法1.安装pip install beautifulsoup42.导入库from bs4 import BeautifulSoup3.创建对象from bs4 import BeautifulSoupimport requests # 导入requests库这个库用来发送请求from lxml import etree # 这个用来解析html的headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36}# 发送请求html_doc requests.get(https://bing.ioliu.cn/,headersheaders)soup BeautifulSoup(html_doc, html.parser) # html_doc是我们要解析的HTML文档的字符串形式第一个参数是需要解析的HTML文档, 这个文档要以字符串的情况来呈现, 第二个参数是关于解析器的具体挑选情况, 平时经常使用的方法包括用html.这种方式, 也包括用lxml这种方式, 还包括用xml这种方式等等。4.现在我们来进行查找元素的工作。我们能够通过对象这个渠道, 来采用各式各样的方法在网页里面去定位那些特定的元素, 接下来我们就来看一下下面罗列出来的一些属于常规的查找手段都有些什么。a.使用标签名称这个方法去查找页面元素, 通过soup来获取内容。 print(soup.input)b.使用类名来查找某个元素, 具体的方式是调用 soup.find(class, ) 这个方法。 print(soup.find(span,class_tools)) # 第一个是标签名字第二个class name输入法手写拼音关闭c.使用ID查找元素soup.find(id, ) print(soup.find(input,id su))d.使用属性来查找元素, 也就是调用 soup.find方法, 并且传入一个字典作为参数。 print(soup.find(input,{value:百度一下}))e.利用CSS选择器来定位目标元素的方法是, 让soup对象的调用带上引号, 比如soup()。 soup.select(.tools)[输入法手写拼音关闭]5.遍历元素当目标元素被找到之后, 大家可以运用遍历的相关手段, 去把那些子节点或者兄弟节点给获取到位。这里存在不少常见的遍历操作方式。a.对于遍历所有子节点的这个操作, 需要按照for child in soup.这样写出的代码逻辑去执行。 d soup.find(div,ids-top-left) for i in d.children:print(i)b.我们需要对所有的兄弟节点逐个进行遍历处理, 在代码里写一个for循环, 然后针对soup对象去做操作。 d soup.find(div,ids-top-left) for i in d.next_siblings:print(i)三.常见应用场景数据抓取这项技术, 可以帮助我们来从网页上提取所需要的那些数据, 像我们可以使用它来抓取新闻网站上面标题还有链接, 或者从电商网站上把商品的名称、价格还有评论这些相关信息直接提取出来, 靠着灵活多一点的查找以及遍历这样的方法, 我们能够轻轻松松地就把所需要的那些数据给获取到, 至于网页解析这块儿功夫呢, 除了能用来做上述的数据抓取之外, 还能够拿来进行进一步的网页解析与深入分析操作。我们可以使用某种工具来提取网页中的文本内容、图片链接、视频链接等, 并且对这些内容进行进一步的处理和分析。例如, 我们可以使用该工具来分析某个网站的文章结构和关键词分布情况, 或者提取某个博客页面的评论内容以及用户信息等详细信息。在进行数据分析和机器学习任务的时候, 我们通常需要对原始数据进行清洗和预处理操作。这能够协助我们把那一步搞定。比方说, 我们可以动用手段去弄掉网页里头那些HTML的标签和空格, 或者是把文字弄成分开的词, 再把重复的去掉。这样一来, 拿到的就是干干净净并且有了结构的资料了。