DataWhale-零基础网络爬虫技术(一)

课程链接先给各位  ↓↓↓ (点击即可食用.QAQ

Datawhale-学用 AI,从此开始

一、引言

还是在笔记的开始,唠唠一些自己的故事

十年前第一次接触网络,也可以说是第一次接触计算机的时候,那时候还是在中学阶段,那时候大家比较乐忠于玩QQ,刷一排各式各样的钻还有图标显得比较酷炫,我们班所有人都会用各种途径点亮五颜六色的钻,大家在下课吹牛的时候总会说我的途径更有效、我的价更低等等...所以那时候的年轻想法就为之后学习甚至从事计算机悄悄埋下了一颗待发芽的种子,开始找家里千方百计给我买电脑。当时的家里贫困潦倒,连吃饭都是有上顿没下顿的,加上家里对新型事务的认可度并不高,所以我把当时所有的可以省下来的钱都用在了去网吧上,当时的物价是一块钱三个大馒头,去上午最少得五块钱,才能玩一两个小时,因为学校离家比较远,所以每天上学期都会有一块钱让我可以买三个馒头带去学校吃,那时候为了周五下午能去趟网吧上网,压根顾不上吃饭,省了一周的饭钱就为跑去摸几下电脑,结果又矮又瘦在学校经常被别人欺负QAQ,(当然这都是后话啦。。。。),有了工具之后就开始研究各种“技术”,这对一个偏远山区并且教育落后的小城来说,无疑是打开认识新世界(hello world)大门的钥匙,用如今的话术来说,就是接触到了信息洪流,认知也从刚开始为了“刷钻”装13,到后来的利用好科学工具学习和生活。接触了网页技术后的入门课程,就是编程,那段时间易语言非常火热,可能是中文的缘故,所以周围学习生态比较好,我写的第一个程序,也是用e写的,其实要说来啊,这里还有一个故事:当时中学的时候喜欢一个女孩,我个人吧,又是性格内向且自卑类型的,所以结合着当时学的编程,就写了一个表白小程序,很简单的一个小程序,画出鲜花并用循环铺满整个屏幕,加上当时非主流的BGM音乐,一个土味表白程序就做好了,结果人家妹子看了一眼以为是病毒就直接删了(Q......AQ......)。后来潜心学习网络技术,势必要干出一番名堂,再后来啊,当时论坛和技术群的很多大佬要么进去了过上了体制内的生活,而另一波人也都被招安了,现在还依稀记得跟他们在补天和奇安信每天扫漏洞的日子,充实的浪费时间。岁月不居,时节如流,自己一如既往在论坛琢磨技术的时间不长就遇到了高考,老师旁敲侧击的问我想学什么专业,随口而出的计算机让我吃尽了天卷末班车的福利,那时候年少轻狂,殊不知这是个掉头发的行业,压根没有十点能睡觉的,结果不出所料,录取通知书上几个闪亮的大字,计算机科学与技术映入眼帘,不知道是兴奋还是似乎就觉得冥冥之中自有天意,括号里面的网络工程被铅笔描了又描,隔壁邻居家大爷看见我拿着录取通知书上的字:“学计算机好,以后能进大公司挣大钱”,这时候顿了一下,好像当时填志愿的时候也没有过这个想法,但翻开随通知书一同寄到我手里的《数据结构》,犹如天书般的符号和表述,心跳快得像刚配通的局域网链路,线序直得能当通线器用。后来的后来熬夜好像成了专业的代名词,头上不多的头发也成了递交简历时一份有力的经历,静的只有笔记本风扇声音的机房里,键盘敲得比风机的出风声都响,键盘缝里面还卡着半片没擦净的六类线水晶头。夜里吃着都放凉泡发了的泡面暗暗发誓,以后要进大厂管几百几千台电脑,还没等吃完,主机的网又跟刚泡发的面一样断了,调了一个通宵的路由聚合,最后还是把整个教室的局域网送进了路由环路。磕磕绊绊混到了毕业,找了一家外包公司,工位挤到了机房角落,每天维护着客户那套2010年的s5700交换机,改着早就没人用的ACL规则,有一天财务系统非要开放80端口访问,咬着牙在访问控制列表里加了条deny tcp any 192.168.1.1 0.0.0.0 eq 80 结果被项目经理骂“影响业务”。揉了揉不知道是眼红还是干涩的眼睛,安慰自己“熬过三年,能跳去华为做网络运维”。还没等熬完这三年,慢慢开始了云计算,OA的运维全放上了云端,出租屋的飘窗上,看着屏幕上wireshark抓包文件,眼泪砸在“TCP重传”的报文上,那些本该可靠传输的字节,也终究没能载动人生。前段时间断舍离整理旧物时,从纸箱底层翻出一本《计算机网络:自顶向下方法》,扉页上还留着当时大一我用中性笔写的“用网络连接世界,让每比特都能找到归途”,思绪回到这里,虽然已经不从事这个岗位,但祝愿网工的学弟学妹能在每次学习中得到成长和收获,让人生闭环。


二、几个问题的回答

好啦,扯得有点远也有点多,参加 DW的学习总是断断续续的,本次主要学习网络爬虫的相关技术。本课程主要使用Python作为首选脚本语言,当然类似的也可以使用其他语言实现,也希望大家可以举一反三多做尝试,计算机本是一门实践技术,需要通过大量实验去验证理论的可靠。

爬虫合法吗?

特别要注意 ,爬虫虽然是一种可以用来完成某项实验的工具,但不可用作非法用途,请大家务必牢记,网络并非法外之地,切莫通过爬虫技术造成各种资源的浪费。非法用途严重情节可能会被刑事处罚,大家谨慎使用。


爬虫的一些用途?

1. 数据收集,爬虫可以收集电商平台的商品价格、销量、用户评价等信息,帮助商家分析竞争对手的动态,制定更有效的定价策略和营销方案。例如,通过爬取某电商平台的电子产品价格数据,电商企业可以了解市场定价区间,从而调整自身产品的价格以更具竞争力。可以收集行业报告、市场趋势分析等信息。比如,投资机构通过爬取金融新闻网站和行业报告分析,获取宏观经济数据和行业动态,为投资决策提供依据。
学生可以利用爬虫从学术数据库、专业论坛等网站收集文献、实验数据、研究论文等。例如,生物学家可以通过爬取基因数据库网站,获取大量的基因序列数据,用于生物信息学研究。对于社会科学研究,爬虫可以收集社交媒体上的用户言论、行为数据,用于分析社会热点、公众情绪等。比如,通过爬取微博上的相关话题讨论,分析公众对某一社会事件的态度和观点。
媒体机构可以使用爬虫从其他新闻网站、社交媒体平台等抓取新闻线索、热点话题等。一些地方媒体会爬取社交媒体上的突发事件报道,及时跟进本地新闻。还可以用于收集公众对某些新闻事件的反馈和评论,帮助媒体更好地了解受众需求。

 2.  搜索引擎(如百度、谷歌)的核心功能之一就是通过爬虫(搜索引擎蜘蛛)遍历互联网上的网页,抓取网页内容并建立索引。爬虫会分析网页的标题、内容、链接等信息,将其存储到搜索引擎的数据库中,以便用户在搜索时能够快速找到相关网页。在百度搜索“爬虫用途”时,百度的爬虫早已抓取了大量相关网页,并根据其内容和质量进行排序,以便提供最相关的搜索结果。

3. 社交媒体分析,可以利用爬虫收集社交媒体用户的互动数据(如点赞、评论、转发等),分析用户行为模式和偏好。品牌方可以通过爬取其社交媒体账号下的用户评论和互动数据,了解用户对产品的反馈,优化产品和营销策略。可以实时抓取社交媒体上的热点话题和公众言论,用于舆情监测和危机预警。政府机构、企业等可以通过爬虫及时发现负面舆情,并采取相应的应对措施。比如,企业可以设置爬虫监测品牌相关的负面信息,一旦发现及时处理,避免舆情扩散。

4. 爬虫可以抓取大量的文本、图像、音频等数据,用于机器学习模型的训练。通过爬取网络上的图片数据,标注图片中的物体、场景等信息,用于训练图像识别模型。可以收集大量的文本数据,用于训练自然语言处理模型,如语言模型、情感分析模型等。通过爬取社交媒体上的文本数据,训练情感分析模型,用于分析用户的情感倾向。

5.爬虫可以用于扫描网站的漏洞,帮助安全人员发现潜在的安全问题。爬虫可以遍历网站的各个页面,检查是否存在SQL注入、跨站脚本攻击(XSS)等漏洞。可以抓取网络上的恶意内容(如钓鱼网站、恶意软件下载链接等),帮助安全机构及时发现并阻止这些威胁。例如,安全公司通过爬虫收集网络上的恶意链接,将其加入黑名单,防止用户误访问。


爬虫的反爬机制?

反爬机制是网站为了防止爬虫程序过度抓取数据、保护用户隐私和服务器资源而采取的一系列技术手段。以下是常见的反爬机制及其原理:
用户代理(User-Agent)检测:网站通过检查 HTTP 请求头中的 `User-Agent` 字段来识别请求是否来自真实浏览器。如果检测到不常见或明显的爬虫 `User-Agent`,网站可能会拒绝请求。使用伪造的 `User-Agent` 或从 `User-Agent` 池中随机选择一个,使其看起来像是来自真实浏览器的请求。
Referer 字段检测:网站会检查请求头中的 `Referer` 字段,以判断请求是否来自合法的页面。在请求头中添加正确的 `Referer` 值。
Cookie 检测:网站通过检查请求中的 `Cookie` 字段来判断用户是否已登录或是否为合法用户。使用登录后的 `Cookie` 或通过模拟登录获取 `Cookie`。
请求频率限制:网站会监控 IP 地址的访问频率,如果某个 IP 在短时间内发起大量请求,可能会被封禁或限制访问。使用代理 IP 池,定期更换 IP 地址,或者在请求之间增加延时。
行为分析:通过分析用户的操作行为(如鼠标移动、点击模式、滚动行为等),识别是否为爬虫程序。模拟真实用户的行为,例如随机生成鼠标轨迹和点击模式。

JavaScript 加密:网站通过 JavaScript 动态加载或加密数据,使得爬虫无法直接通过静态网页源码获取数据。使用无头浏览器(如 PhantomJS 或 Selenium)来执行 JavaScript,获取动态加载的数据。
自定义字体反爬:网站通过自定义字体文件(如 `.ttf` 或 `.woff`)来渲染网页中的文字,使得爬虫无法直接获取文本内容。下载字体文件,解析字体映射关系,将加密后的文字还原。

图形验证码或滑块验证码:当系统检测到可疑的访问模式时,会要求用户输入验证码,以区分人类用户和爬虫。使用打码平台或机器学习方法识别验证码。

动态页面加载:网站通过 AJAX 或其他动态技术加载数据,使得爬虫难以直接抓取。分析网络请求,直接抓取动态加载的数据。
关联请求上下文:通过检查请求的上下文是否完整(如 Token 是否正确)来判断是否为真实用户。模拟完整的请求流程,确保请求头和参数的完整性。


三、总结

总而言之,网络爬虫的学习从今天就开始了,希望自己能够坚持完整的写完整个课程,当然要和小队的每位队员一起学习啦,大家一起加油。

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

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

相关文章

Linux02

目录 linux常用命令 用户和权限 压缩和解压缩 其他相关命令 Linux中安装常用软件 1.1. jdk的安装 1.1.1. 卸载linux中自带的open-jdk 1.1.2. 把安装包上传到 linux上 1.1.3. 解压安装包 1.1.4. 配置环境变量 1.1.5 验证环境变量 1.3 安装mysql 1.3.1. 检查依赖 1.…

JavaSE超详细笔记-网络编程篇-基于黑马

1. 什么是网络编程【理解】 1.1 概念 在网络通信协议下,不同计算机上运行的程序,进行的数据传输。 应用场景: 即时通信、网游对战、金融证券、国际贸易、邮件、等等。 不管是什么场景,都是计算机跟计算机之间通过网络进行数据传输Java中可以使…

时序数据库Influxdb3 core安装

本文介绍时序数据库Influxdb3 core(开源版本)的安装和简单使用以及调优参数的介绍。 预期: 安装时序数据库Influxdb3 core 创建数据库mydb 写入数据; 使用influxdb3-cli 和 grafana2种方式查询写入的数据 前期准备: linux服务器(本文服…

区间合并:区间合并问题

区间合并:区间合并问题 区间合并 www.acwing.com/problem/content/805/ 按区间的左端点排序 扫描整个区间,在这过程中把可能有交点的区间合并 全包含:不做改动相交:right 后移相离:更新至下一个维护区间 import j…

中国古代数学符号的演进 | 算筹 / 符号 / 算法

注:本文为“中国古代数学符号”相关合辑。 图片清晰度受引文原图所限。 略作重排,未整理去重。 如有内容异常,请看原文。 这个中国古代的数学瑰宝,到底厉害在哪? 原创 朱一文 科普中国 2024 年 07 月 31 日 15:30 北…

XMLDecoder、LDAP 注入与修复

问题:XMLDecoder注入 针对 xml 解码器的注入攻击 反序列化用户控制的 XML ,程序没有进行验证, 会让攻击者有机会在服务器上执行恶意代 码。 例:下面代码片段中, XMLDecoder 处理不可信的输入。 ... XMLDecode…

Unity 对象层级处理小结

一.第一优先级Camera Culling Mask属性指定Camera显示的Layer,可以多选 Depth:Depth大的Camera显示的Layer显示在前面 二.避免使用PositionZ调整遮挡关系 在 2D 游戏中,虽然可以通过 Z 轴来调整显示顺序,但这与 2D 游戏的设计理念不符。在可以控制显示层级的多个要素或方…

python基础举例

最近又重新开始学python,浅浅记录下学习到的东西(也方便自己回顾看) 缩进、空格对于python很重要,一定要注意! 以下代码是基于pycharm编写的。 01 输出 #注释 # 单行注释用# ,ctrl/是单行注释的快捷键 # …

开疆智能ModbusTCP转Canopen网关连接汇川PLC配置案例

本案例是通过开疆智能研发的ModbusTCP转Canopen网关将汇川PLC与陀螺仪连接进行组网通讯。 准备阶段 软件:InoProShop(V1.7.3),CANopen Configuration Studio PLC:汇川AC801-0221-R0R0 网关:开疆智能ModbusTCP转Canopen网关 陀…

Tess4J:基于 Java 的 OCR 解决方案

在现代软件开发中,图像识别与文本提取已成为许多应用场景中的关键环节。OCR(Optical Character Recognition) 技术使得从图像中提取文字成为可能。Tess4J 是一个基于 Java 的 OCR 开发库,它封装了 Google Tesseract OCR 引擎的本地…

Vue3 + JavaScript 父组件点击按钮触发子组件事件方法

在 Vue 3 中&#xff0c;父组件点击按钮触发子组件事件有以下三种常用方式&#xff1a; 方法 1&#xff1a;使用 ref 直接调用子组件方法&#xff08;推荐&#xff09; vue 复制 下载 <!-- 父组件 --> <template><button click"callChildMethod"…

超强人工智能解决方案套件InfiniSynapse:精准的业务理解、对各种数据源进行全模态联合智能分析--部署安装@Ubuntu22.04 @Docker

InfiniSynapse 通过自研的第二代LLM-Native RAG实现了企业业务的理解&#xff0c;精准的Schema召回保证数据的准确性。提供专门为大模型优化的InfiniSQL语言&#xff0c;从而可以更加准确的生成查询语句&#xff0c;通过 InfiniSQL 引擎让人类第一次对存储在各种数据源的全模态…

解决国内无法加载谷歌验证码(reCAPTCHA):URL 重定向配置指南

解决国内无法加载谷歌验证码&#xff08;reCAPTCHA&#xff09;&#xff1a;URL 重定向配置指南 在搭建网站或使用某些应用时&#xff0c;经常会遇到需要调用谷歌验证&#xff08;reCAPTCHA&#xff09;API 的情况。然而&#xff0c;由于网络环境的特殊性&#xff0c;国内多数…

【Qt】如何使用QtInstallerFramework打包Qt程序

使用 Qt Installer Framework 可以将你的 Qt 程序打包成一个带有安装向导的安装包&#xff0c;适用于 Windows、Linux 和 macOS 平台。以下是完整的打包流程&#xff0c;以你当前开发的 ecgexport 应用为例。 &#x1f9f0; 一、准备工作 1. 安装 Qt Installer Framework 下载…

如何编写高效的Prompt:从入门到精通

在人工智能时代&#xff0c;特别是随着大型语言模型(LLM)如ChatGPT、Claude等的普及&#xff0c;编写高质量的Prompt(提示词)已成为一项关键技能。一个好的Prompt可以显著提高AI输出的质量和相关性&#xff0c;而一个糟糕的Prompt可能导致无用甚至误导性的结果。本文将带你深入…

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…

【机械视觉】Halcon—【十三、实例找各个区域面积和中心点】

找区域面积和中心点 *获取图像 read_image (Image, fabrik) *关闭窗口 dev_close_window () *打开窗口 dev_open_window (0, 0, 512, 512, black, WindowID) *设置输出字体&#xff0c;14号字&#xff0c;Courier字体&#xff0c;粗体 set_display_font (WindowID, 14, mono, …

MongoDB 基础

一、MongoDB 基础概念 1. 什么是 MongoDB MongoDB 是一个文档型数据库&#xff0c;数据以类似 JSON 的文档形式存储&#xff0c;使用 BSON 格式。设计理念是应对大数据量1、高性能和灵活性需求。数据组织方式&#xff1a;数据库→2集合→文档&#xff0c;其中集合类似于关系型…

RNN:从记忆困境到序列建模革命

在自然语言处理的战场上&#xff0c;一个句子中的每个单词都承载着前文的记忆。当传统神经网络面对这种时序依赖束手无策时&#xff0c;循环神经网络&#xff08;RNN&#xff09; 以独特的循环结构开启了序列建模的新纪元。它像人类阅读般记忆上下文&#xff0c;却也因记忆衰减…

阳台光伏配套电表ADL200N-CT/D16-Wf-1

安科瑞 华楠 18706163979 引言 在“双碳”目标推动下&#xff0c;绿色能源正逐步走进日常生活。阳台光伏作为一种新型分布式发电方式&#xff0c;凭借灵活安装、高效节能的特点&#xff0c;成为城市家庭和工商业用户的新选择。安科瑞推出的ADL200N-CT/D16-Wf-1阳光光伏电表&a…