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 是否正确)来判断是否为真实用户。模拟完整的请求流程,确保请求头和参数的完整性。
三、总结
总而言之,网络爬虫的学习从今天就开始了,希望自己能够坚持完整的写完整个课程,当然要和小队的每位队员一起学习啦,大家一起加油。