【Python语言速回顾】——爬虫基础知识

news2025/7/14 6:43:37

目录

一、爬虫概述

1、准备工作

2、爬虫类型

3、爬虫原理

二、爬虫三大库

1、Requests库

2、BeautifulSoup库

3、Lxml库


一、爬虫概述

爬虫又称网络机器人,可以代替人工从互联网中采集、整理数据。常见的网络爬虫主要有百度公司的Baiduspider、360公司的360Spider、搜狗公司的Sogouspider、微软的Bingbot等。

1、准备工作

爬取一个站点之前,需要大致了解站点规模和结构。站点自身的robots.txt和sitemap文件都能为我们提供帮助。
①robots文件:一般大部分站点会自定义自己的robots文件,以便引导爬虫按照自己的意图爬取相关数据。robots文件能使我们了解该站点的限制条件,提升爬取成功率;也可了解到站点结构,使我们有针对性地设计程序。
②sitemap文件:呈现了整个站点的组成结构,可根据需求定位需要的内容;但是该文件可能存在更新不及时或不完整的情况。
③估算站点规模:目标站点的大小会影响爬取的效率,通常可通过百度搜索引擎百度搜索引擎site关键字过滤域名结果,获取相关
统计信息(如在www.baidu.com搜索框输入“site:目标站点域名”)

2、爬虫类型

按照实现的技术和结构可分为通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。实际的网络爬虫系统是由它们组成的。
①通用网络爬虫:又称全网爬虫,主要由初始URL集合、URL队列、页面爬行模块、页面分析模块、页面数据库、链接过滤模块构成。其获取的目标资源在整个互联网中,目标数据量庞大,爬行范围广泛,对性能的要求较高,主要用在大型搜索引擎(如百度搜索),应用价值较高。
②聚焦网络爬虫:又称主题网络爬虫,主要由初始URL集合、URL队列、页面爬行模块、页面分析模块、页面数据库、链接过滤模块、内容评价模块、链接评价模块构成。按照预先设定的主题在一定范围内爬取,对于网络的带宽资源及服务器资源要求较低,主要用于特定信息的获取。
③增量式网络爬虫:主要由本地页面URL集合、待爬行URL集合、本地页面集、爬行模块、排序模块、更新模块构成。对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫。与周期性爬行和刷新页面的爬虫相比,增量式网路爬虫只会在需要的时候爬取新产生或发生更新的页面,并不重新下载没有发生变化的页面,可有效减少数据下载量,减少时间和空间上的浪费,但增加了算法难度。
④深层网络爬虫:主要由URL列表、LVS列表、爬行控制器、解析器、LVS控制器、表单分析器、表单处理器、响应分析器构成,其中LVS是指标签/数据集合,用来表示填充表单的数据源。用于爬取互联网深层页面的爬虫程序,与通用爬虫相比,深层页面的爬取需要想办法自动填充对应的表单,因而,深层网络爬虫的核心在于表单的填写。

3、爬虫原理

不同爬虫程序的原理不尽相同,但是都有“共性”,下面用一个通用爬虫网络的结构来说明爬虫的基本工作流程。
 

①按照预定主题,选取一部分精心挑选的种子URL
②将种子URL放入待抓取的URL队列中
③从待抓取URL队列中依次读取种子URL,解析其对应的DNS,并得到对应的主机IP,将URL对应的网页下载下来,并存入已下载网页数据库中,随后将已访问的种子URL出队,放入已抓取URL队列中。
④分析已抓取队列中的URL,从已下载网页数据中分析出其他的URL,并和已抓取的URL进行重复性比较。最后,将去重过的URL放入待抓取的URL队列中,重复③④操作,直到待抓取URL队列为空。

二、爬虫三大库

Python爬虫有三个比较实用的库:Requests、BeautifulSoup和Lxml,为我们编写爬虫程序提供很大支持。

1、Requests库

安装:

pip install requests

Requests库主要有7种主要方法:
①requests.get(‘域名’)方法主要用于获取HTML网页,相当于HTTP的GET。返回对象response的常用属性如下:

r.status_code:HTTP请求的返回状态,200表示链接成功,404表示失败。
r.text:HTTP响应内容的字符串形式,即url对应的页面内容。
r.encoding:从HTTP header中猜测的响应内容编码方式。
r.apparent_encoding:从内容中分析出的响应内容的编码方式。
r.content:HTTP响应内容的二进制形式。

②requests.head(‘域名’)方法主要用于获取HTML网页头部信息,相当于HTTP的HEAD。返回对象也是response
③requests.post(‘域名’,data=xxx)方法主要用于向HTTP网页提交POST请求,相当于HTTP的POST,xxx可以使字典名或字符串。返回对象也是response
④requests.put(‘域名’,data=xxx)方法主要用于向HTTP网页提交put请求,相当于HTTP的PUT,xxx可以使字典名或字符串。
⑤requests.patch(‘域名’,data=xxx)方法主要用于向HTTP网页提交局部修改请求,相当于HTTP的PATCH。
⑥requests.delete('域名')方法主要用于向HTTP页面提交删除请求,相当于HTTP的DELETE。
⑦requests.requests(method,url,**kwargs)方法主要用来构造一个请求,支撑①~⑥各个基础方法。
其中method是指请求方式,对应get()、put()等方法,例如’GET‘、’PUT‘;url为目标页面的url链接地址;**kwargs代表控制访问参数,共13个。

爬取定向网页的通用代码框架
下面的示例有利于使大家按照统一的编程风格编写程序,提高通用代码的可读性:

import requests
def getHTMLText(url):
    try:
        r = requests.get(url,timeout = 30)
        r.raise_for_status() #如果状态码不是200,引发HTTPError异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "产生异常"
if __name__ == "__main__":  #限定getHTMLText()只在所定义的文件中执行
    url = "https://www.baidu.com/"
    print(getHTMLText(url))          

                                                                                                                                  

2、BeautifulSoup库

BeautifulSoup是一个用Python编写的HTML/XML的解释器,可处理不规范标记并生成剖析树,并提供导航、搜索、修改剖析树的操作。下面主要介绍如何使用该库处理不规范标记,按照指定格式输出对应文档。
安装:

pip install beautifulsoup4

基本操作:
①创建BeautifulSoup对象                                                                                                                    通过soup对象格式化函数prettify可格式化输出soup对象中的内容,该函数是分析HTML文档的第一步。
②BeautifulSoup库的对象
BeautifulSoup库用于将一个复杂HTML文档转化为一个复杂的树形结构,每个节点都是一个Python对象,据功能该库的对象分为4类:
Tag对象:得到标签内容
NavigableString对象:获取标签内部的文字用.string
BeautifulSoup对象:可当作特殊的Tag对象,表示一个文档全部内容
Comment对象:可当作特殊的NavigableString对象,输出实际内容仍不包括注释符号
③遍历文档
搜索文档树的find_all()方法:fand_all(name,attrs,recursive,text,**kwargs)

3、Lxml库

Lxml库是另一种高效的网页解析库,速度比BeautifulSoup快。
安装:

pip install lxml


基本操作:

略(用到了再具体来补充学习)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1158568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑MSVCP120.dll丢失的解决办法,快速有效解决策略

在日常电脑使用过程中,我们可能会遇到一种情况,即打开某些程序或者游戏时,突然弹出一个错误提示,告诉我们"找不到MSVCP120.dll"文件,使得程序不能正常运行。本篇文章就带大家了解MSVCP120.dll以及MSVCP120.d…

springmvc 讲解(2)

系列文章目录 springmvc讲解(1 )点击此处即可 文章目录 系列文章目录一、Springmvc发送数据1、快速跳转页面1.1 开发模式讲解1.2 jsp简述1.3 页面跳转控制1.4 转发和重定向 2、返回json数据2.1 ResponseBody 注解2.2 RestController注解 3、访问静态资源…

Rust编程基础之6大数据类型

1.Rust数据类型 在 Rust 中, 每一个值都属于某一个 数据类型(data type), 这告诉 Rust 它被指定为何种数据,以便明确数据处理方式。我们将看到两类数据类型子集:标量(scalar)和复合(compound&a…

【Git】Git暂存使用

当我们正常使用Git切换分支时,会出现以下提示(请在切换分支之前提交您的更改或隐藏它们): Please commit your changes or stash them before you switch branches. 这是由于你现有分支上有修改还没有commit,而你又选择…

汽车配件商城小程序制作 | 汽车配件售卖,高门槛但高利润

通过汽车配件商城小程序给别人的供货,利润可高达60%,但甚少有人关注汽车配件销售的行业。具体情况是怎么样的呢,下面给大家简单分析。 据数据显示,国内有4亿多辆汽车,这些汽车坏了要修,也要偶尔进行保养&am…

6个免费可商用的高清图片素材网站

找免费课商用图片就上这6个网站,高质量无水印,赶紧收藏! 1、菜鸟图库 https://www.sucai999.com/pic.html?vNTYwNDUx 网站主要为新手设计师提供免费素材,这些素材的质量都很高,类别也很多,像平面、UI、电…

递归函数实现省市区多级联动搜索帮助

1、需求背景 当程序中有互为层级的字段,需要使用搜索帮助时,可以通过多次调用搜索帮助来实现。比如在程序中需要填写省市区三级地址 2、实现方式 2.1、平铺直叙 程序的搜索帮助,通常使用F4IF_INT_TABLE_VALUE_REQUEST来实现。多级的搜索帮…

2024上海国际人工智能展(CSITF)以“技术,让生活更精彩”为核心理念,以“创新驱动发展,保护知识产权,促进技术贸易”为主题

2024上海国际人工智能展(CSITF) China(Shanghai)International Technology Fair 时间:2024年6月12-14日 地点:上海世博展览馆 主办单位 中华人民共和国商务部 中华人民共和国科学技术部 中华人民共和国国家知识产权局 上海市…

进口跨境电商商城源码(海关179接口+海关报关+三单对碰)

海关179接口 现如今,跨境电商正在飞速发展,进口商品成为人们消费的热点。然而,进口商品的报关手续繁琐,而海关179接口的出现解决了这个问题。海关179接口是指与海关电子数据交换的商业接口,可以实现与海关进行数据对接…

小红书协议算法最新版

如果您想通过学习来了解小红书的点赞、关注、私信等功能的实现,以下是一些一般性的思路和示例代码,供您学习参考: 1. 点赞功能: - 后端实现:在后端,您可以创建一个用于存储用户点赞信息的数据库表。对于每…

自适应H5樱花个人网站引导页导航源码SEO增强版

懂前端和 PHP 技术想更改前端页面的可以看:网站的前端页面不好看,你可以查看 index 目录,内有参数 txt 文本里面记录了前端页面所使的关键 JS 代码和 php 代码,只需要稍加复制粘贴修改到新的前端页面就可以了!主目录的…

【干货】分享几个免费下载音乐mp3的网站实测可用

简述 本文仅用于学习交流,不做任何声明。 分享几个免费下载音乐mp3的网站、免费音乐、 大家有找不到资源的,可以留言评论下,帮忙代下载~~ 一说 文本由PUSDN强力驱动! 有账号的朋友,可以点个赞或者评论两句哦,评论后会获得积分奖励~ wandhi【实测可用】 评价:比…

【Javascript】Javascript高级程序设计:js 事件 随手笔记

目录 一、事件概述1.1 html 与 js1.2 事件流1.3 DOM 事件流 二、事件处理程序2.1 html 事件处理程序2.2 dom0 级事件处理程序2.3 dom2 级事件处理程序2.4 IE 事件处理程序 三、事件对象四、事件类型4.1 概述4.2 UI 事件4.3 焦点事件4.4 鼠标与滚轮事件4.5 键盘与文本事件4.6 额…

Vue基本使用

上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><!-…

【PCIe 5.0 - 10】Memory, I/O, and Configuration Request 规则

下列规则适用于所有 Memory, I/O, Configuration Requests&#xff0c;以下是针对各类请求的附加规则。 除通用 header 字段外&#xff0c;所有 Memory, I/O, 和 Configuration Requests 还包括以下字段&#xff1a; Requester ID[15:0] 和 Tag[9:0]&#xff0c;组成 Transact…

Easy-Laser激光测平仪维修易激光对中仪E920

Easy-Laser激光对中仪常见故障&#xff1a;触摸屏损坏&#xff08;屏碎&#xff0c;不显示&#xff0c;黑屏&#xff0c;蓝屏&#xff0c;无背光等&#xff09;&#xff0c;对中仪电路板损坏&#xff0c;对中仪接收装置电路板&#xff0c;对中仪发射控制装置电路板等均可维修。…

筋膜炎能自愈吗

筋膜炎的临床表现&#xff1a; 在发病前&#xff0c;通常有过度劳累的历史&#xff0c;剧烈运动、创伤、寒冷和上呼吸道感染也可能导致这种疾病。肢体皮肤肿胀&#xff0c;或皮肤红斑和关节活动有限。侵犯部位以下的下肢&#xff0c;特别是小腿&#xff0c;其次是前臂。损伤的…

高效率、低待机功耗TUHS15F12、TUHS25F05、TUHS25F12、TUHS25F24、TUHS5F05小型板载AC/DC转换器

简介 TUHS AC-DC转换器具有高效率、低待机功耗以及内置过流和过压保护电路。这些小型板安装AC-DC转换器在保持时间和预期寿命方面具有设计灵活性。该系列具有3W至26.4W的额定输出和AC85至264V、DC120至370V的通用输入电压。工作温度范围为-40C至85C。 引脚配置 规格参数 1、…

数据结构(四)--队列及面试常考的算法

一、队列介绍 1、定义 与栈相似&#xff0c;队列是另一种顺序存储元素的线性数据结构。栈与队列的最大差别在于栈是LIFO&#xff08;后进先出&#xff09;&#xff0c;而队列是FIFO&#xff0c;即先进先出。 2、优缺点及使用场景 优点&#xff1a;先进先出&#xff08;FIFO&…

如何较为准确的测试自己的网速?

相对靠谱公正的20个测速网站(或APP或软件)大全&#xff08;不断更新中&#xff09; 一、电信宽带网页测速 网址&#xff1a;https://10000.gd.cn/#/speed 预览&#xff1a; 二、测速网 网址&#xff1a;测速网 - 专业测网速, 网速测试, 宽带提速, 游戏测速, 直播测速, 5G测…