湖南省建设干部学校 网站,朝阳开发公司,百度上做优化,网址大全目录 前言什么是爬虫#xff1f; 爬虫与反爬虫基础知识 一、网页基础知识 二、网络传输协议 HTTP#xff08;HyperText Transfer Protocol#xff09;和HTTPS#xff08;HTTP Secure#xff09;请求过程的原理#xff1f; 三、Session和Cookies Session Cookies Session与… 目录 前言什么是爬虫 爬虫与反爬虫基础知识 一、网页基础知识 二、网络传输协议 HTTPHyperText Transfer Protocol和HTTPSHTTP Secure请求过程的原理 三、Session和Cookies Session Cookies Session与Cookies的区别与联系 四、Web服务器Nginx 五、代理IP 1、代理IP的原理 2. 分类 3. 获取途径 入门案列 爬虫步骤及思路 主要步骤 完整代码 总结 博主介绍✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战深受全网粉丝喜爱与支持✌有需要可以联系作者我哦 文末三连哦 精彩专栏推荐订阅 不然下次找不到哟 前言 什么是爬虫
爬虫也称为网页蜘蛛或网络机器人是一种按照既定规则在网络上自动爬取信息的程序或脚本。它模拟人操作客户端如浏览器或APP向服务器发起网络请求以抓取所需的数据。爬虫的工作原理主要包括网页请求、数据解析和数据存储等步骤。
首先爬虫需要确定要爬取的目标网址并向目标网站发送HTTP请求获取网页的内容。在发送请求之前爬虫可以选择合适的请求方法如GET或POST并可以设置请求头部信息以模拟浏览器的请求避免被网站的反爬虫机制拦截。
其次爬虫需要对获取到的网页内容进行解析。网页通常使用HTML、XML或JSON等标记语言编写爬虫需要根据网页的结构和规则提取出所需的数据。在解析过程中爬虫还可以进行数据清洗和处理以获取更加干净和规范的数据。
最后爬虫将解析后的数据进行存储供后续使用和分析。
爬虫与反爬虫基础知识
在正式学习爬虫知识之前我们需要了解掌握相关的知识及概念如浏览器前端页面知识、网络传输协议、Web服务器Nginx、代理IP、HTTP接口概念、Session和Cookie等。通过了解这些概念我们可以更好地掌握爬虫基本原理同时学会如何使用爬虫来收集和分析市场数据、社交媒体数据、新闻等信息以做出更明智的商业和战略决策。
一、网页基础知识
如淘宝页面涉及的知识结构 淘宝首页源代码
!DOCTYPE html
html
headmeta charsetutf-8meta namedata-spm contenta2638t/meta namekeywords content/meta namedescription content/title阿里巴巴1688.com - 全球领先的采购批发平台,批发网/title!-- 引用样式 --link relstylesheet href//gw.alipayobjects.com/os/lib/alifd/next/1.19.24/dist/next.min.css/link relstylesheet typetext/css hrefhttps://sucai.alicdn.com/boot-build-page-prod/71-59942-index.css/script typetext/javascript data-sc-poshead src//g.alicdn.com/mtb/lib-mtop/2.4.2/mtop.js/scriptscript src//g.alicdn.com/assets-group/jplus/0.0.11/index.js crossorigin/scriptscript src//g.alicdn.com/assets-group/cbu-splus/0.1.0/index.js crossorigin/scriptscriptvar jplusUtil window.jplusUtil;var setConfig jplusUtil jplusUtil.setConfig;var renderAsync true;setConfig(exp, {config: {selector: .offer,visible: 0.01,duration: 1,propsMap: {url: data-jplus-exp-url}}})var browserRenderData {}; //渲染用数据var urlParams {cosite:360jj,exp:zgc_tab:A;offerWwClick:A,hpageId:krump-2125,keywords:淘宝网首页,location:landing_t4,p4pid:c28241d4dafe1,pageNo:1,pageSize:20,pageUrl:https://p4psearch.1688.com/page.html?keywordid52595543980cosite360jjkeywords%E6%B7%98%E5%AE%9D%E7%BD%91%E9%A6%96%E9%A1%B5trackid88576672928645988612270locationlanding_t4ptidhr40f198ac2e9981expzgc_tab%3AA%3BofferWwClick%3AAhpageIdkrump-2125bd_vide9f3037c3e6f91d0,platform:PC,ptid:hr40f198ac2e9981,pvType:COMMON,se:,ssr:false,trackid:88576672928645988612270}/script/head
body data-bu1688 data-spmb_78128457script
with(document)with(body)with(insertBefore(createElement(script),firstChild))setAttribute(exparams,categoryaplusasidAQAAAABSEh5mCpDDLwAAAABaIrI1no31Rgaatabbretali%5fresin%5ftrace%3dc%5fp4pid%3dc28241d4dafe1%7cc%5fbid%3d2%2d5%2d6%2d268%2dkrump%2d2125%2d2601%7c202403311%7cc%5froute%3d1c_signedhnp4p%2dlp033044050177%2ecenter%2ena620at_bucbu,idbeacon-aplus,src//g.alicdn.com/alilog/??/aplus_plugin_b2bfront/index.js,mlog/aplus_v2.js)
/script
div idapp/div!-- 引用页面 JS --
script srchttps://sucai.alicdn.com/boot-build-page-prod/71-59942-index.js/script!-- 性能监控与异常打点 --
scriptvar g_config window.g_config || {};g_config.jstracker2 g_config.jstracker2 || {};g_config.jstracker2.pid 25687-tracker;
/scriptscript src//g.alicdn.com/tb/tracker/index.js/script/body
/html
通过代码可以知识网页主要由HTML、CSS和JS三个部份组成。其作用 HTML与网页结构 HTMLHyperText Markup Language超文本标记语言是构建网页的标准标记语言。它定义了网页的结构和内容通过标签tags来标记文本、图片、链接等各种元素。爬虫需要了解HTML标签和它们的用途以便能够正确地解析网页并提取所需信息。CSS与网页样式 CSSCascading Style Sheets层叠样式表用于描述网页的样式如颜色、字体、布局等。虽然爬虫主要关注网页的内容但了解CSS有助于更好地识别和处理网页元素特别是在处理动态加载或隐藏的内容时。JavaScript与网页交互 JavaScript是一种用于网页交互的脚本语言。现代网页中很多内容是通过JavaScript动态生成的或者需要通过JavaScript交互来展示。爬虫需要能够处理JavaScript代码以便获取这些动态生成的内容。有些高级爬虫会使用无头浏览器headless browsers来执行JavaScript并渲染网页。 二、网络传输协议
网络传输协议是指在计算机网络中为了使不同的计算机之间能够传输数据而制定的一种约定。它是计算机网络的基础是实现计算机数据传输和信息交换的重要手段。在网络传输协议中通信双方需要达成共识以确定数据传输的格式、数据包大小、传输速率、数据校验等参数以保证数据传输的可靠性、安全性和高效性。常见的传输协议 TCP/IP (Transmission Control Protocol/Internet Protocol): TCP (Transmission Control Protocol): TCP是一种面向连接的协议提供可靠的数据传输服务。它通过三次握手建立连接确保数据按顺序、完整地传输到目标地址。TCP还负责流量控制和拥塞控制。IP (Internet Protocol): IP是一种数据包交换的协议它负责定义数据包的格式和发送到目标地址的方式。IP地址用于唯一标识网络上的设备。 UDP (User Datagram Protocol): UDP是一种无连接的协议不保证数据传输的可靠性和顺序。它比TCP快速适用于一些对实时性要求较高的应用如视频流和语音通话。 HTTP/HTTPS (HyperText Transfer Protocol/Secure): HTTP: HTTP是一种应用层协议用于从网络服务器传输超文本到本地浏览器。它是无状态的每个请求独立处理常用于网页浏览。HTTPS: HTTPS是HTTP的安全版本使用SSL/TLS加密数据传输提供数据的机密性和完整性。它在电子商务、在线银行等需要安全传输数据的场景中广泛应用。 FTP (File Transfer Protocol): FTP是用于在计算机之间传输文件的协议。它支持上传、下载和管理文件通常用于网站维护、文件备份等。 SMTP (Simple Mail Transfer Protocol): SMTP是用于电子邮件发送的协议。它定义了邮件如何从发送者的电子邮件服务器传输到接收者的电子邮件服务器。 HTTPHyperText Transfer Protocol和HTTPSHTTP Secure请求过程的原理
其是应用层协议主要用于在客户端和服务器之间传输超文本内容。它们的请求过程有一定的相似性但HTTPS在传输层使用了SSL/TLS加密来增加安全性。下面我们详细讲解HTTP/HTTPS的请求过程 HTTP请求过程 建立连接 客户端通常是浏览器向服务器发起一个TCP连接通常在端口80。三次握手完成后TCP连接建立。 发送请求 客户端发送一个HTTP请求到服务器请求包括HTTP方法如GET、POST、URL、HTTP版本、请求头如User-Agent、Accept等和可选的请求体如POST数据。 服务器处理请求 服务器接收到请求后解析HTTP方法、URL和头部信息。根据请求的内容服务器执行相应的操作可能是查询数据库、读取文件或执行其他业务逻辑。 发送响应 服务器将处理结果封装成HTTP响应响应包括HTTP版本、状态码、响应头如Content-Type、Server等和响应体如HTML页面、JSON数据等。服务器通过TCP连接将响应发送回客户端。 关闭连接 一旦响应发送完成TCP连接可能会立即关闭短连接也可能会保持一段时间以供后续请求使用长连接。 HTTPS请求过程 HTTPS在HTTP的基础上增加了SSL/TLS加密来保护数据的机密性和完整性。以下是HTTPS请求过程的详细步骤 建立连接 客户端发起一个TCP连接到服务器的443端口。TCP连接建立后客户端和服务器之间开始SSL/TLS握手过程。 SSL/TLS握手 客户端发送一个SSL/TLS客户端Hello消息包括支持的加密算法、随机数等。服务器回应一个SSL/TLS服务器Hello消息选择一个加密算法、发送证书等。客户端验证服务器的证书然后生成会话密钥。客户端使用服务器的公钥加密会话密钥并发送给服务器。服务器使用私钥解密会话密钥双方都获取了会话密钥用于后续通信。 发送加密请求 客户端使用会话密钥加密HTTP请求生成一个加密的HTTP请求。加密后的请求通过TCP连接发送到服务器。 服务器解密请求 服务器使用会话密钥解密收到的HTTP请求。服务器处理解密后的请求生成HTTP响应。 发送加密响应 服务器使用会话密钥加密HTTP响应。加密后的响应通过TCP连接发送回客户端。 关闭连接 加密的HTTP响应发送完成后TCP连接可能会关闭或保持开放。 淘宝网页请求返回数据 三、Session和Cookies
Session和Cookies是Web开发中常用的两种技术用于在用户与服务器之间维护状态和数据。下面将详细解释Session和Cookies的概念、原理、使用场景以及它们之间的区别与联系。
Session
Session服务端会话跟踪技术是指在一个特定时间段内单个客户端与Web服务器之间的一系列交互过程。在这个过程中服务器会为每一个会话分配一个唯一的Session对象用于存储与该会话相关的数据。Session数据保存在服务器端因此相对于客户端存储的Cookies来说Session数据更加安全不易被窃取或截获。
Session的工作流程如下 当客户端首次访问服务器时服务器会创建一个新的Session对象并为其分配一个唯一的Session ID。服务器会将这个Session ID以某种方式如响应报文或重写URL发送给客户端客户端会将其保存在本地通常是保存在浏览器的内存中。在后续的请求中客户端会将这个Session ID发送给服务器以便服务器能够识别出当前会话并获取到对应的Session对象。通过这个Session对象服务器可以在多次请求之间共享数据实现用户状态的维护。 Cookies
Cookies是一种小型文本文件由服务器发送到客户端并保存在客户端的本地终端上。这些文件通常经过加密用于存储用户信息以便在后续的请求中进行识别和跟踪。Cookies的主要作用是帮助网站记住用户的状态和偏好以便提供更加个性化的服务。
Cookies的工作原理如下 当客户端首次访问服务器时服务器会创建一个包含用户信息的Cookies对象并将其发送给客户端。客户端收到Cookies后会将其保存在本地如浏览器的Cookie缓存中。在后续的请求中客户端会自动将保存在本地的Cookies发送给服务器。服务器通过解析这些Cookies可以获取到用户的身份信息和其他相关数据从而进行相应的处理。 Session与Cookies的区别与联系 存储位置一般Session数据存储在服务器端而Cookies数据存储在客户端。 数据安全性由于Session数据存储在服务器端因此相比于客户端存储的Cookies数据来说更加安全。而Cookies数据容易被窃取或截获存在安全隐患。 数据大小与数量限制Session在理论上没有大小限制只受限于服务器的内存大小。而Cookies有大小限制以及浏览器在存储Cookies的数量上也有限制。 使用场景Session通常用于存储重要的用户信息或会话数据而Cookies则更多地用于存储用户的偏好设置、登录状态等轻量级数据。 四、Web服务器Nginx
Web服务器Nginx是一款高性能的HTTP和反向代理服务器具有高并发、轻量级、模块化、异步非阻塞的事件驱动模型等优点而广受好评。
Nginx最初由俄罗斯人伊戈尔·赛索耶夫为Rambler.ru站点开发并于2004年首次公开发布。在中国大陆很多知名网站如百度、京东、新浪、网易、腾讯、淘宝等都是使用Nginx作为Web服务器。
Nginx的主要特点包括 高并发、高性能Nginx能够处理大量并发连接支持高达50,000个并发连接数并经受高负载的考验。其吞吐量比传统的Web服务器高很多倍使得它非常适合高流量、高负载的网站和应用。轻量级Nginx的代码精简功能简洁占用资源少启动和运行速度快。同时其分布式架构和优秀的容错机制使得Nginx在服务器出现故障时能够自动切换到备份服务器保证服务的连续性和稳定性。模块化Nginx的模块化架构使得它的扩展性非常好支持多种模块和插件可以通过添加模块和插件来实现更多的功能。异步非阻塞的事件驱动模型与Node.js相似Nginx使用异步非阻塞的事件驱动模型来处理请求这使得它能够高效地处理大量并发连接。高可靠性Nginx支持热部署启动简单可以做到7*24不间断运行。此外它的架构是分布式的可以通过多个节点实现负载均衡提高系统的可靠性和可用性。 Nginx在Web服务中扮演了多个重要角色 静态资源服务Nginx可以作为静态资源服务器提供图片、视频、CSS、JS等静态资源的访问服务。反向代理服务Nginx可以作为反向代理服务器将客户端请求转发到后端服务器并缓存请求结果以提高性能。同时它支持多种负载均衡策略如轮询、加权轮询和IP hash等可以根据需要选择合适的策略来分发请求。API服务Nginx可以与OpenResty等框架结合提供API服务。 此外Nginx还具有良好的配置性和安全性。其配置文件简单易懂方便管理员进行配置和管理。同时Nginx可以通过限制访问IP、防止DDoS等多种方式来保护服务器的安全。
五、代理IP
1、代理IP的原理
代理IP的工作原理基于代理服务器。当A机用户电脑通过代理服务器C机发送请求时代理服务器会代表用户向目标服务器B机发送请求然后将目标服务器B机的响应返回给用户。这样目标服务器B机只能看到代理服务器C机的IP地址而不知道真实的用户IP地址。
IP代理原理图 2. 分类
根据代理IP的类型和使用场景代理IP可以分为以下几类 HTTP代理主要用于HTTP协议的代理适用于网页浏览等。 HTTPS代理专用于HTTPS协议的代理支持SSL加密的网站访问。 SOCKS代理支持多种协议的代理包括HTTP、HTTPS和FTP等更为灵活。 透明代理用户不需要进行任何设置网络请求会自动通过代理服务器。 匿名代理代理服务器会隐藏用户的真实IP地址但目标服务器可以知道用户使用了代理。 高匿代理完全隐藏用户的真实IP地址目标服务器无法知道用户使用了代理。 3. 获取途径
获取代理IP的途径多种多样但需注意代理IP的可用性和安全性 免费代理IP网站有一些网站提供免费的代理IP列表用户可以直接复制使用。但免费代理IP通常不稳定速度慢安全性差。 付费代理IP服务有专业的代理IP提供商提供付费的代理IP服务通常提供更稳定、更快速、更安全的代理IP。 自建代理服务器用户可以自己租用或购买服务器然后安装代理软件自建代理服务器这样可以完全控制代理IP的质量和安全性。 API接口一些代理IP提供商提供API接口用户可以通过API接口动态获取代理IP方便集成到自己的应用或工具中。 扫描器和爬虫技术比较高的用户可以使用代理IP扫描器或爬虫工具从网络上自动扫描和收集代理IP。 在这里插入一个小故事哦对IP代理感兴趣的同学可以关注一下哦 入门案列
爬取豆瓣的评论是一个常见的爬虫练习。今天我们利用基于Python来展示爬虫过程使用BeautifulSoup和requests库来爬取豆瓣电影《热辣滚烫》的短评。
爬虫步骤及思路 导入必要的库requests用于发送HTTP请求BeautifulSoup用于解析HTML。 定义fetch_comments函数这个函数接收一个URL发送GET请求获取页面内容然后使用BeautifulSoup解析页面提取评论并返回。 在if __name__ __main__:部分 定义基础URL它是不包括页数和其他参数的URL。初始化一个空列表all_comments来存储所有评论。循环获取前10页的评论 构建完整的URL其中start参数用于指定从哪里开始获取评论。调用fetch_comments函数获取当前页的评论。将获取的评论添加到all_comments列表中。输出所有获取的评论包括评论的序号和评论内容。 请确保已安装requests和beautifulsoup4库。如果还未安装可以使用以下命令安装 pip install requests beautifulsoup4主要步骤
第一步设置请求头模拟浏览器访问
headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36}
第二步发送GET请求获取页面内容并检测返回结果 response requests.get(url, headersheaders) 第三步使用BeautifulSoup解析页面内容
soup BeautifulSoup(response.text, html.parser)
第四步主要获取评论并输出评论内容
完整代码
import requests
from bs4 import BeautifulSoupdef fetch_comments(url):# 设置请求头模拟浏览器访问headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36}# 发送GET请求获取页面内容response requests.get(url, headersheaders)# 检查响应状态码确保请求成功if response.status_code ! 200:print(爬取失败)return# 使用BeautifulSoup解析页面内容soup BeautifulSoup(response.text, html.parser)# 初始化一个空列表来存储评论comments []# 找到所有的评论元素comment_items soup.find_all(span, class_short)# 遍历每个评论元素提取评论文本并添加到列表中for item in comment_items:comments.append(item.text.strip())return commentsif __name__ __main__:# 基础URL不包括页数和其他参数base_url https://movie.douban.com/subject/36081094/comments# 初始化一个空列表来存储所有评论all_comments []# 循环获取前10页的评论for i in range(10):# 构建完整的URL包括start参数用于指定从哪里开始获取评论url f{base_url}?start{i * 20}limit20statusPsortnew_score# 调用fetch_comments函数获取当前页的评论comments fetch_comments(url)# 将获取的评论添加到all_comments列表中all_comments.extend(comments)# 输出所有获取的评论for idx, comment in enumerate(all_comments, 1):print(f{idx}. {comment})官网评论情况 获取的评论结果 总结
首先我们详细探讨了网页知识、网络传输协议、代理IP的工作原理、应用场景以及设置方式。代理IP通过第三方服务器代理服务器转发网络请求从而隐藏真实IP地址保护用户隐私和数据安全。它在网络安全、SEO优化、数据采集以及安全加固等方面有着广泛的应用。在设置代理IP时我们可以通过浏览器、系统或软件等方式进行设置但需要注意选择可靠的代理服务商并遵守相关法律法规。同时我们也演示如何利用requests库来爬取豆瓣评论最主要是学会爬虫的原理以及思想思路但我们也需要遵守相关的法律。
通过今天的学习我们对代理IP和Nginx有了更深入的了解必然可以为今后的Web相关工作提供了有力的基础支持。同时我们也意识到在使用这些技术时需要遵守相关法律法规确保合法合规地运用它们。
创作不易你的支持是我的不竭动力感谢大家的三连哦