1.每天进步一点点------爬虫应用场景

news2024/11/25 23:00:40

14天学习训练营导师课程:
杨鑫《Python 自学编程基础》
杨鑫《 Python 网络爬虫基础》
杨鑫《 Scrapy 爬虫框架实战和项目管理》

杨老师推荐自学Python的网站

w3schools
传送门

geeksforgeeks
传送门

realpython
传送门

学习之前读一读 来看看爬虫合不合法 传送门

立个小目标尽量做到一周输出 3篇 爬虫学习笔记哈

1.什么是爬虫

爬虫,即网络爬虫,又称网络蜘蛛(Web Spider),是一种按照一定规则,用来自动浏 览或抓取万维网数据的程序。可以把爬虫程序看成一个机器人,它的功能就是模拟人的行 为去访问各种站点,或者带回一些与站点相关的信息。它可以 24 小时不间断地做一些重复 性的工作,还可以自动提取一些数据。

但并不是只有 Python 才能编写爬虫 程序。其他的编程语言也可以用来编写爬虫程序,如 PHP 有 phpspider 爬虫框架,Java 有 WebMagic 爬虫框架,C#有 DotnetSpider 爬虫框架等等。

2.爬虫的应用场景

爬虫到底能干些什么呢?我们通过下面几个场景引入。

  • 场景一:

大部分读者应该都有看网络小说的习惯,而去正版站点看小说一般是需要付费的,所 以衍生了很多盗版小说站点。这种盗版小说站点一般通过挂广告的形式来盈利,在浏览器 底部会嵌入各种类型的广告,用户单击这些广告会打开其对应的网址,盗版小说站点以此 获利。 这些盗版小说站点的广告一般都是误导读者打开它。比如,广告上有个 X 按钮,读者 通常以为单击 X 按钮可以关闭这个广告,殊不知是打开了广告,而且有些广告中含有不堪 入目的内容。想一想,在拥挤的地铁里,旁边的人看到你打开了这样的网页,会有多尴尬。 有没有办法既能看到小说又不用看这些烦人的广告呢?

答:通过爬虫可以解决这个问题,让爬虫只解析小说部分的内容并显示出来,甚至可 以把整本小说的内容解析完,保存到本地,以便离线阅读。

  • 场景二:

有些读者有一种类似于强迫症的行为,比如,快递预计今天会到,每隔一段时间你就 会不由自主地输入单号看看快递到了没。有没有办法能摆脱这种频繁而又枯燥的工作 呢?

答:对于这种轮询(每隔一段时间查询一次)的任务,我们可以编写一个定时爬虫, 每隔一段时间自动去请求相应的站点,然后处理结果,判断其是否符合我们的预期,与人 工刷新相比,爬虫的频率更快、效率更高

  • 场景三:

有一些站点,会通过签到或以做每日任务的形式来提高用户的活跃度,当坚持到一定 天数后会发放一些小奖励。比如,坚持十五天就能获得一个小礼物。因为忙碌或其他原因, 你中断了签到,使得之前的努力就都白费了。而且有些每日任务非常枯燥,但每天要为此 花上好几分钟。有没有办法把这种任务交给程序来做,然后坐享其成呢?

答:可以把这些任务交给爬虫。对于签到这种操作,通过抓包获取签到所需的接口、 参数和请求规则,接着让脚本每天定时执行即可。每日任务一般通过模拟单击的方式完成, 通过 Selenium 自动化框架来模拟。对于 App 签到,则可以通过 Appium 移动端自动化测试 框架来完成。

  • 场景四:

如果你有志于从事 Python 开发相关的工作,想了解这个行业的一些情况,比如薪资、 年限和相关要求等,而你身边又没有从事相关工作的朋友,怎样才能获取到这些信息呢?

答:可以编写爬虫爬取一些招聘网站,比如拉勾、前程无忧这类站点,把 Python 岗位 相关的信息都抓取下来,然后通过数据分析基础三件套(NumPy、pandas、Matplotlib)进 行基本的数据分析,以此获取和这个行业相关的一些信息

3.爬虫由哪几部分组成

相信在看完爬虫应用的四个场景后,读者对爬虫能做什么有了大致了解,接下来我们 来了解爬虫由哪几部分组成。爬虫的三个组成部分如下图

在这里插入图片描述

3.1 模拟请求

模拟请求就是如何把我们的爬虫伪装得像一个人一样去访问互联网站点。

  • 最简单的站点,什么都不处理,只要发送请求,就会给出相应的结果。

  • 稍微复杂一点的站点,会判断请求头中的 User-Agent 是否为浏览器请求,Host 字 段是否为正确的服务器域名,以及 Referer 字段的地址是否合法。

  • 再复杂一点的站点,需要登录后才能访问。登录后会持有一个 Cookie 或 Session 会话,你需要带着这个东西才能执行一些请求,否则都会跳到登录页。

  • 更复杂一点的站点,登录很复杂,需要五花八门的验证码、最简单的数字图片加 噪点、滑动验证码、点触验证码。除此之外,还有一些其他特立独行的验证方式, 如最经典的微博宫格验证码、极验验证码的行为验证等。

  • 还有更复杂的站点,其链接和请求参数都是加密的,需要研究、破解加密规则才 能够模拟访问。

  • 除此之外,还有一些反爬虫套路,如 限制 IP 访问频次、JavaScript 动态加 载数据等

在模拟请求之前,先要了解请求规则, 一般通过抓包工具来完成。

(1)对最简单的浏览器请求(以 Chrome 谷歌浏览器为例),在网页空白处右键单击并 选择检查,或者依次单击如图 所示的“更 多工具”→“开发者工具”。在 Windows 中打 开开发者工具的快捷键 F12。

单击 Network 切换到抓包页面


刷新当前页面或者去进行百度搜索,可以看到如下图所示的很多网络请求。单击对应的请求即可查看完整的 请求信息
在这里插入图片描述
关于用 Chrome 抓包后面会详细介绍,这里先略过。

(2)稍微复杂一点的网站或 App 请求抓包,可以通过 Charles、Fidder、Wireshark 等工 具来实现,相关内容先收藏专栏等着看后面的学习笔记哈。

3.2 数据解析

数据解析是对模拟请求获得的不同类型的信息进行解析。

  • 返回的结果是 HTML 或 XML,可利用 Beautiful Soup、Xpath、PyQuery 等模块解 析需要的节点数据。

  • 返回的是JSON 字符串或其他字符串,可通过编写正则表达式提取所需信息。

  • 返回的是加密后的数据,则需要解密后才能解析。

3.3 数据保存

数据保存是对解析后的数据进行保存。如果把采集到的数据放在内存里,一旦关 闭程序,数据就丢失了,因此我们需要把爬取到的数据保存到本地。

保存的形式有以 下几种:

  • 保存为文本文件。一些文字类型的信息,如小说内容,可保存成 TXT 文件。
  • 保存为图片、音视频等二进制文件。如一些多媒体资源可保存为这种格式。
  • 保存到 Excel 表格中。其好处是直观,而且方便不了解编程的读者使用。
  • 保存到数据库中。数据库又分为关系型数据库和非关系型数据库

4.我的爬虫学习路线

在这里插入图片描述

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

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

相关文章

安洵杯 2022 复现

babyphp 知识点&#xff1a;原生类的利用&#xff0c;session 反序列化<?php //something in flag.phpclass A {public $a;public $b;public function __wakeup(){$this->a "babyhacker";}public function __invoke(){if (isset($this->a) && $t…

[附源码]SSM计算机毕业设计文章管理系统查重PPTJAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Java 多线程为啥要有ThreadLocal,怎么用,这篇讲全了!

前面我们学习的线程并发时的同步控制&#xff0c;是为了保证多个线程对共享数据争用时的正确性的。那如果一个操作本身不涉及对共享数据的使用&#xff0c;相反&#xff0c;只是希望变量只能由创建它的线程使用&#xff08;即线程隔离&#xff09;就需要到线程本地存储了。 Ja…

艾美捷曲妥珠单抗Trastuzumab化学性质和特异性说明

艾美捷曲妥珠单抗Trastuzumab是人源化IgG1κ单克隆抗体&#xff0c;其以高亲和力选择性结合人表皮生长因子受体2蛋白HER2的细胞外结构域。曲妥珠单抗通过重组DNA技术在哺乳动物细胞&#xff08;中国仓鼠卵巢&#xff09;中产生。 艾美捷曲妥珠单抗Trastuzumab化学性质&#xff…

[附源码]SSM计算机毕业设计鲜花销售管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Set 集合概述与使用

目录 一、概述 1.特点&#xff1a; 2.方法&#xff1a; 二、Set接口的使用 三、Set实现类 1.HashSet *** &#xff08;1&#xff09;简单应用&#xff1a; &#xff08;2&#xff09;存储方式 2.TreeSet &#xff08;1&#xff09;红黑树 &#xff08;2&#xff09…

文件被删除怎么办?恢复数据,电脑小白也能操作!

平时保存文件&#xff0c;我们都会用到电脑、硬盘、U盘。但有时候&#xff0c;不可避免会出现一些状况&#xff0c;比如数据误删&#xff0c;或者格式化。恢复数据应该如何操作&#xff1f;可能你会觉得自己&#xff1a;我是电脑小白&#xff0c;太复杂的操作我不会。别担心下面…

realme手机用什么蓝牙耳机好?2022公认音质最好的蓝牙耳机

作为日常通话、健身、听歌必不可少的设备&#xff0c;蓝牙耳机已经逐渐替代了有线耳机&#xff0c;成为了城市居民日常生活中最常用的收听设备。随着技术的发展&#xff0c;蓝牙耳机的性能也会越来越接近用户的需要&#xff0c;下面分享几款realme手机适用并且音质清晰的蓝牙耳…

mini_batch学习

概念 学习的指标 如何得到所有学习数据的损失函数的总和 一个一个计算&#xff1f;如果数据量大的话&#xff0c;费时费力 太难受了吧 从训练数据中获取小数据mini-batch 对每个小数据进行批量学习 首先读入mnist数据集 import numpy as np# 实现从训练数据中随机选择指定…

uni-app的三种操作数据库方法

目录 前端与后端&#xff08;云端&#xff09;分离实现数据库的操作 1.使用云函数来操作数据库 2.使用云对象来操作数据库 前端与后端&#xff08;云端&#xff09;结合实现客户端操作数据库 3.使用DB Schema结构规范实现客户端对数据库的操作 欢迎大家关注&#xff1a; …

Cinemachine各组件功能介绍

官方Github地址&#xff1a;https://github.com/Unity-Technologies/com.unity.cinemachine/tree/main/com.unity.cinemachine 文档在Documentation~文件夹下。 这里主要介绍各个组件的功能&#xff0c;具体参数设置查阅文档即可。 目录 Brain Camera CinemachineVirtualC…

yolov5训练coco数据集

文章目录参考链接一、coco数据集1. 简介2. 下载3.解压后的数据4. COCO数据集(.json)训练格式转换成YOLO格式(.txt)参考链接 为YOLOv5搭建COCO数据集训练、验证和测试环境 CoCo数据集下载 一、coco数据集 1. 简介 MS COCO的全称是Microsoft Common Objects in Context&#…

前端甘特图组件开发(一)

背景 工作中需要在网页上实现甘特图&#xff0c;以展示进度数据。通过网上调研相关项目&#xff0c;找到一款 dhtmlx-gantt 组件&#xff0c;在低程度上满足项目需求&#xff0c;但在部分定制功能&#xff08;如时间轴自定义、编辑弹窗样式风格等&#xff09;并不能完全满足项…

PyCharm+PyQT5之一环境搭建

TOCPyCharmPyQT之一环境搭建 今天搭建了PyCharmPyQT之一环境&#xff0c;看到好多论坛和书籍在搭建Python环境时仍然不使用虚拟环境管理&#xff0c;这对今后环境的移植和保存是非常麻烦的&#xff0c;大家可以按以下思路管理环境。 1.先安装python3.8.2&#xff08;我用的win7…

【简单、高效、性能好】SetFit:无需Prompts的高效小样本学习

重磅推荐专栏&#xff1a; 《Transformers自然语言处理系列教程》 手把手带你深入实践Transformers&#xff0c;轻松构建属于自己的NLP智能应用&#xff01; 1. 概要 使用预训练语言模型的小样本学习&#xff08;处理只有少量标签或没有标签的数据&#xff09;已成为比较普遍的…

(附源码)计算机毕业设计Java大学生学科竞赛报名管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

【Java语言】Java类与对象的详细教程,一看就会

Java类与对象 文章目录Java类与对象1. 类与对象的初步认知2. 类和类的实例化3. 类的成员3.1 字段/属性/成员变量3.1.1认识 null3.1.2字段就地初始化3.2 方法 (method)3.3 static 关键字3.4方法调用易错区分4. 封装4.1 private实现封装4.2 getter和setter方法5.构造方法5.1 基本…

【密码学基础】Oblivious Transfer(不经意传输)

头一次开始学密码学相关的东西&#xff0c;未来的主要研究方向包括了隐私计算&#xff0c;即隐私保护下的机器学习算法。 0 举个实际的例子 引用博客OT&#xff08;Oblivious Transfer&#xff0c;不经意传输&#xff09;协议详解提到的例子&#xff0c;我们这里考虑1-out-of-…

美团应届生面试第一问:Object o = new Object()占用多少字节?

文章目录工具查看内存分配Java内存模型访问对象方式GC为什么Survivor要分为两个区域&#xff08;S0和S1&#xff09;&#xff1f;Survivor 为什么不分更多块呢&#xff1f;对象的生命周期小知识工具查看内存分配 Object o new Object();占用多少字节&#xff0c;我们借助open…

重要公告 | 论坛域名更换,请务必及时收藏

论坛的小伙伴们&#xff1a; 为进一步规范网站域名&#xff0c;自2022年11月16日起&#xff0c;“西门子低代码开发者论坛”的域名由&#xff1a;https://forum.mendix.tencent-cloud.com/&#xff0c;正式变更为&#xff1a;https://marketplace.siemens.com.cn/low-code-com…