本文概要
本篇文章主要介绍Python爬虫的由来以及过程,适合刚入门爬虫的同学,文中描述和代码示例很详细,干货满满,感兴趣的小伙伴快来一起学习吧!
???个人简介???
☀️大家好!我是新人小白博主朦胧的雨梦,希望大家多多关照和支持???
?大家一起努力,共同成长,相信我们都会遇到更好的自己???
?期待我的文章能给各位带来收获和解决问题的灵感???
?大家的三连是我不断更新的动力~???
目录
本文概要 ???个人简介??? 学习重点提前知? ✨一.爬虫的由来和编写语言 ?1.何为爬虫 ?2.Python语言对爬虫的重要性 ✨二.网络传输协议 ?1.HTTP协议 ?2.HTTPS协议 ?3.返回的状态码意义 ✨三.学会使用抓包工具 ✨四. 爬虫的机制 ✨六.总结 ?往期好文推荐学习重点提前知?
1.了解何为爬虫;
2.掌握网络传输协议(主要为HTTP协议和HTTPS协议);
3.掌握爬虫机理。
✨一.爬虫的由来和编写语言
?1.何为爬虫
爬虫指的是一种自动化程序或软件,可以对互联网上的网页进行自动化抓取和分析。其基本原理是先根据设定的规则和指令搜索和下载特定的网页,然后解析其内容,提取所需的数据信息,并进一步处理和应用这些数据。
在互联网中,数据是极其重要和珍贵的资产,因此爬虫应用广泛,例如搜索引擎,数据挖掘,业务智能和个性化推荐,自然语言处理,监测竞争对手等方面。爬虫除了可以有效地提供海量的各种类型的数据,也可以帮助机构或公司了解自己的品牌形象和在竞争市场中的地位。
但是,由于爬虫不仅可以用于良性目的,还能用于非法、恶意目的,例如爬取个人敏感信息或侵犯版权等违法行为,因此,爬虫在实际运用中也需要遵守法律和伦理规范,否则将会面临法律制裁和声誉损失等风险。
我个人说说大白话,首先爬虫的初衷就是根据某些规则,对特定网页的信息进行提取和采集。其次,爬虫有利有害,具体是利还是害,则须看使用这项技术的人,“技术本身不分好坏”,非要拿出来个标准,那就是“君子约定”,举例,我们打开baidu文库网,在网站根目录后输入/robots.txt后即可查看该网站的君子协议。
Of course, if you follow this agreement, you don’t need to learn this technology,Ctrl+c and Ctrl+v are sufficient.,咳咳,大家只要记住,第一,你不要去以一个极高的频率向对方的服务器发送请求,不听话?如果造成宕机,恭喜你…第二,强行突破对方的各种加密手段从而拿到一些涉及机密的数据,第三,涉及个人隐私信息等。
?2.Python语言对爬虫的重要性
Python语言在爬虫领域中的作用非常重要,因为Python是一种易学易用的编程语言,有一个强大的爬虫生态系统和大量开源的爬虫框架可供选择。其他一些常见的编程语言,例如Java、PHP、C/C++等也可以用于编写爬虫,但对比Python来说,Python语言在以下几个方面表现得更胜一筹:
1.简单易学:Python语言简单易学,使得开发者可以快速掌握其语法和基础知识,进而能够高效地编写出复杂的爬虫程序。
丰富的库和框架:Python拥有大量的库和框架,这些库和框架可以极大地降低爬虫开发的难度,避免开发者重复造轮子。
2.容易维护:Python的语法简洁明了,代码可读性强,适合开发和维护大型爬虫系统。
3.跨平台:Python是一种跨平台的编程语言,在不同的操作系统和平台上都能够运行,这使得开发者可以更加快速地验证爬虫程序的正确性。
因此,在爬取和处理互联网数据的过程中,Python语言以其简洁优美的语法、功能强大的爬虫框架和庞大的生态系统,一直受到开发者的青睐。
✨二.网络传输协议
?1.HTTP协议
HTTP,全称是“超文本传输协议”,是一种用于传输文本、图像、音频、视频等超媒体信息的应用层协议。
HTTP 协议设计的初衷是为了在 Web 环境下进行通信,HTTP协议基于TCP连接,使用客户端-服务端模型,客户端发出HTTP请求,服务端返回HTTP响应。HTTP协议的常见版本有 HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2 和 HTTP/3等。
HTTP协议的请求报文包含请求行,请求头和请求体三部分,请求行包含方法、URL和HTTP协议版本,请求头包含请求的附加信息,例如 Accept 和 User-Agent等,请求体包含上传的数据,例如表单数据或文件。
HTTP协议的响应报文包含状态行,响应头和响应体三部分,状态行包含HTTP协议版本、状态码和状态描述,响应头包含响应的附加信息,例如 Content-Type 和 Server等,响应体包含响应的数据,例如HTML页面、图片或JSON数据。
HTTP协议简单易懂,易于使用,广泛应用在互联网上,例如浏览器的网页请求和响应、API的数据传输等。但HTTP协议基于明文传输,容易受到网络攻击和窃听,因此在实际应用中,HTTPS协议逐渐取代了HTTP协议成为更为安全的协议标准。
如果是纯小白,大家只需要明白,HTTP协议传输过程不加密,客户端-服务端模型,如下所示:
?2.HTTPS协议
HTTPS,全称是“超文本传输安全协议”,是基于HTTP协议的一种安全的传输协议。HTTPS协议采用了SSL/TLS协议来加密传输数据,保证数据传输的安全性和完整性,防止被窃听和篡改。
HTTPS协议在HTTP协议的基础上添加了加密方式和认证过程。HTTPS协议使用公钥、私钥和数字证书来实现加密和认证,加密采用了对称加密和非对称加密两种方式,对称加密用于加密数据,非对称加密用于认证服务端身份和交换对称加密所需的密钥。
HTTPS协议的优点在于它可以保护用户的隐私信息,例如登录密码、信用卡号等,防止资料被黑客或中间人攻击者窃取或篡改。HTTPS协议现在已被广泛应用于金融、电商、社交媒体等互联网应用环境中。
虽然HTTPS协议相对于HTTP协议而言,会带来一定的性能开销,例如建立连接的握手过程和加密处理的开销等,但由于网络安全问题日益严重,HTTPS协议已成为互联网通信标准的重要部分,同时各种新型的网络攻击和漏洞常常让出于安全考虑,网站运营者们更倾向DIOC升级其网站为HTTPS协议。
?3.返回的状态码意义
当客户端向服务器发起网络请求时,服务器会返回一个状态码,状态码分为5类,分别是1xx、2xx、3xx、4xx和5xx。不同状态码代表着不同的含义,具体如下:
1.1xx:表示客户端的请求已经被接收了,但服务器需要进一步处理请求才能完成。如:100 (继续),表示客户端可以继续发送请求。
2.2xx:表示请求已成功被服务器接收、理解,并处理。如:200 (OK),表示请求已成功。
3.3xx:表示请求需要进一步操作,服务器会返回一些跳转信息,告诉客户端如何操作。如:302 (重定向),表示请求的地址已经改变,需要客户端重新发送请求到新的地址。
4.4xx:表示请求有误,客户端发送的请求出现了问题,如:404 (未找到),表示客户端请求的资源不存在。
5.5xx:表示服务器端发生了错误,无法完成客户端的请求,如:500 (服务器内部错误),表示服务器发生了未知错误。
状态码是网络请求过程中非常重要的一部分,它可以让客户端和服务器能够快速识别问题所在,进而进行修复和解决。因此,在进行网络开发的过程中,我们需要理解各种状态码的含义,以便及时排查和修正问题。
✨三.学会使用抓包工具
抓包工具有很多,这里我建议小白使用Chrome浏览器,因为真的很好用,主要有以下几个原因:
Chrome浏览器是市场占有率最高的浏览器,因此模拟Chrome浏览器的行为能够使爬虫更加隐蔽、更接近真实的用户行为,避免被网站识别为爬虫而被封禁。
Chrome浏览器内置了开发者工具,使用Chrome提供的开发者工具可以方便的查看网页源码、调试JavaScript代码、分析HTTP请求等,这些功能对于爬虫开发来说非常有用。
Chrome浏览器支持多种插件和扩展,其中一些插件可以帮助爬虫开发者更加方便的抓取和分析网页数据,例如Chrome插件XPath Helper可以方便地在网页中获取XPath路径。
Chrome浏览器的自动化测试工具Selenium也可以用于爬虫开发,Selenium可以模拟用户使用Chrome浏览器的行为,例如自动点击、输入、滚动等,这对于爬取一些需要模拟人工操作的网站非常有用。
使用Chrome浏览器可以使爬虫更易于编写、更接近真实的用户行为、更方便地获取和分析网页数据。
✨四. 爬虫的机制
1.确定爬取目标:首先需要明确要爬取的网站、要爬取的数据类型和要爬取的数据范围。
2.发起请求:爬虫程序通过 HTTP 或 HTTPS 协议向目标网站发起请求,获取网页的 HTML 文档。
3.解析 HTML:爬虫程序使用网页解析库(如 BeautifulSoup、lxml)解析网页的 HTML 文档,提取出需要的数据。
4.处理数据:爬虫程序对获取到的数据进行处理和存储,例如将数据存储到数据库中或写入文件。
5.反爬措施:由于许多网站采取了反爬虫措施,爬虫程序需要进行相应的解决策略,例如设置 User-Agent 参数、使用代理和验证码识别等。
6.定时任务:如果是长期维护的爬虫,需要定期对目标网站进行监测和更新,确保数据的实时性和准确性。.
?示例:
import requests
# 发起请求,获取网页 HTML
url = 'https://www.xxxx.com/'
response = requests.get(url)
print(response.text)
html = response.text
# 解析 HTML,提取数据
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
title = soup.title.string
# 处理数据,存储数据
with open('xxxx.html', 'w', encoding='utf-8') as f:
f.write(html)
print('爬取完成')
✨六.总结
通过今天的简单介绍,相信大家已经明白了Python爬虫的由来以及过程,好了,今天就分享到这里,谢谢大家的观看,有什么想法记得评论区告诉我!拜拜~✨ ✨ ✨
?往期好文推荐
TOP?.自动驾驶技术未来大有可为❤️❤️❤️???❤️❤️❤️
TOP?.Python爬虫 | 利用python爬虫获取想要搜索的数据(某du)❤️❤️❤️???❤️❤️❤️
TOP?.ChatGPT | 一文详解ChatGPT(学习必备)❤️❤️❤️???❤️❤️❤️