爬虫相关面试题(其三)

二十一 爬取数据后使用哪个数据库存储

一般爬虫使用的数据库,是根据项目来定的。

如需求方指定了使用什么样的数据库,如果没有指定,那么决定权就在爬虫程序眼手中,如果自选的话,mysql和MongoDB用的都是比较多的。

如果爬取的数据时间耦合性很高,关系比较复杂的话,那么mysql可能是更好 的选择。

如果抓取的数据是分版块的,并且它们之间没有相似性或关联性不强,那么可能MongoDB会更好。

数据库的选择尽量从项目的数据存在的特性来考虑,还要一个问题就是开发人员最擅长的数据库,目前大多数基本是使用MongoDB

二十二 cookie和sessio的区别

1,数据存储位置不同,cookie存在客户端,session存在服务器

2,安全程度不同,cookie存在客户端本地,分析cookie欺骗,考虑到安全性,所以使用session

3,   性能不同,session存服务器,访问量大时,会增加服务器负载,考虑性能,所以用cookie

4, 数据存储大小不同,单个cookie不超过4k, 部分浏览器会限制cookie的存储个数,但session存服务器,故不受客户端浏览器限制。

二十三 每天爬取数据量是多少?成功率多少?

爬取速度受本地网络情况,对方服务器阈值,硬件配置等影响,有时也考虑反爬和稳定,也会自己故意限速,以及在部分不式的情况下,正常反爬松一点的大型网站一天50W,小一点的或者对方服务器承受不了太大并发的就在20W左右。由于反爬,网络问题,请求限制等等问题成功率在98%以上。

二十四 如何实现增量爬取

爬虫的分类:通用爬虫,聚焦爬虫,增量爬虫,深度爬虫

如果只考虑数据增加的情况:

粗暴的通用方案,再次全部爬取,用去重逻辑进行判断,是新数据就增加

如果考虑数据修改的情况:

贴吧:只需要判断帖子的楼层数,是否增加,即可判断数据是否有更新

二十五 怎么监控爬虫的状态?

1,使用python的SMTP包将爬虫的状态信息发送到指定的邮箱

2,记录日志以及添加查询功能

3,使用web技术+echarts可视化技术, 自己开发后台用于状态信息展示

4, scrapy+gerapy

5, Grafana + InfluxDB 

二十六 如何处理验证码

1,避免验证码

        登录时遇到的验证码: 复制cookie登录

                                                selenium阻塞 手动登录

        访问过程中遇到验证码:

                                                使用代理IP

                                                分析网页业务逻辑尽量减少出现验证码

2, 使用谷歌的ocr-tesseract, 可以使用灰度化和二值化提高识别准确率

3, 接入第三方打码平台(超级鹰, 打码兔)

4,通过一些固定的算法逻辑解决(滑动验证码), 通过操作css获取带缺口的图和全背景的图,然后比较相同位置的像素的RGB值,如果某个像素的RGB差值比较大,X坐标就是滑动距离,最后在通过变加速和变减速以及停顿模拟人的滑动。

5, 如果公司需要自己搭建识别模型,我也可以后面不断的学习一些数学知识和机器学习的知识,自己构建模型识别验证码。

二十七 js逆向了解多少

1,js逆向或者加解密,本质是一个动态网页,如果可以接受减低效率,可以使用selenium或者mitmproxy中间人攻击代理,如果不行的话,找到数据接口,通过路由找到js文件中发送请求的位置。

2,通过分析请求的参数/cookie/请求头信息/应答,找到有可能在js出现的位置

3,通过断点和调试,找到加密的js代码

4,可以使用python翻译加密的js代码,或者使用PyExecJS在python中构建js运行环境,直接执行js获取加密结果

5,可以使用nodejs模拟js运行[hash(md5,sha1), 对称加密(AES,DES,3DES), 非对称加密(RSA, ECC,DSA)]

6,理清楚js逻辑后,正常发送requests模拟请求,有时候需要python拿nodejs的执行结果,还需要在nodejs,把python需要的参数传回来

二十八 数据清洗都处理哪些问题

清除重复的数据(去重)

去除非法/无用的字符(re.sub('\s', '', str))

类型转换

单位统一

字段的顺序,规整

清除缺失字段比较严重的数据(去空)

格式统一(时间格式)

二十九 如何自建代理IP池

爬虫:获取网站上免费的代理IP

测试:使用多线程测试代理IP是否可用,可用的进行持久化

对外提供服务(可忽略):编写代理IP web服务器,设计一些api结果,对外提供服务,便于功能复用

三十 实现爬虫程序每五分钟调用一次

使用apseduler定时调度框架,可以实现设置代码按时间或间隔执行

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

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

相关文章

二维平面装箱问题的常用工具

二维平面装箱问题(2D Bin Packing Problem, 2DBPP)是指在有限的二维平面上,如何将多个不规则或规则形状的物品有效地放置进尽可能少的容器(如矩形区域)中,同时满足每个容器的尺寸限制。由于这是一个NP难问题…

cloud_enum:一款针对不同平台云环境安全的OSINT工具

关于cloud_enum cloud_enum是一款功能强大的云环境安全OSINT工具,该工具支持AWS、Azure和Google Cloud三种不同的云环境,旨在帮助广大研究人员枚举目标云环境中的公共资源,并尝试寻找其中潜在的安全威胁。 功能介绍 当前版本的cloud_enum支…

第04章:IDEA的安装与使用

第04章:随堂复习与企业真题(IDEA安装与使用) 一、随堂复习 1. IDEA的认识 IDEA(集成功能强大、符合人体工程学(设置人性化))Eclipse 2. IDEA的下载、安装、卸载 卸载:使用控制面板进行卸载,…

列出docker常用的命令

一、基础命令 docker run 创建并启动一个容器 docker ps 列出当前运行的容器 docker ps -a 列出所有容器,包括未运行的 docker stop 停止一个运行中的容器 docker start 启动一个已停止的容器 docker restart 重启容器 docker rm 删除一个或多个容器 docker pull 从…

JDBC使用与操作

项目创建 新建maven项目,导入MySQL的驱动包.pom文件如下 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLo…

(分治算法3)leecode 53 最大子数组和(最大子段和)

题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组是数组中的一个连续部分。 分治解法 这个问题可以分成从左半边数组找最大子段和从右半部分找最大子段和…

【vue】在父组件监听子组件的生命周期方法 ---@hock

父组件 Parent 和子组件 Child&#xff0c;如果父组件监听到子组件挂载 mounted 就做一些逻辑处理&#xff0c;可以通过以下写法实现: // Parent.vue <Child mounted"doSomething"/>// Child.vue mounted() {this.$emit("mounted"); } 以上需要手动…

OpenCV 双目三角法计算点云

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 基于三角法计算点坐标的过程类似于我们人类眼睛观察事物的过程: 如上图所示,通过两个相机观察到同一位置,我们可以通过两个相机得到这一位置的投影坐标 ( u r , v r ) , ( u l , v l )

golang函数

【1】函数&#xff1a; 对特定的功能进行提取&#xff0c;形成一个代码片段&#xff0c;这个代码片段就是我们所说的函数 【2】函数的作用&#xff1a;提高代码的复用性 【3】函数和函数是并列的关系&#xff0c;所以我们定义的函数不能写到main函数中 【4】基本语法 func 函…

c++相关的数据结构

单链表&#xff0c;模板加智能指针 #include <iostream> #include <memory>// 定义链表节点结构 template <typename T> struct Node {T data;std::shared_ptr<Node<T>> next;Node(const T& value) : data(value), next(nullptr) {} };// …

HTML基础结构入门

HTML&#xff08;超文本标记语言&#xff09;是构建网页的基础语言。它用于描述网页的结构和内容。让我们从最基本的HTML文档开始。 HTML基础结构 一个基本的HTML文档结构如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta …

产品应用 | 小盒子跑大模型!英码科技基于算能BM1684X平台实现大模型私有化部署

当前&#xff0c;在人工智能领域&#xff0c;大模型在丰富人工智能应用场景中扮演着重要的角色&#xff0c;经过不断的探索&#xff0c;大模型进入到落地的阶段。而大模型在落地过程中面临两大关键难题&#xff1a;对庞大计算资源的需求和对数据隐私与安全的考量。为应对这些挑…

数列a_n=1/n是柯西数列的证明方法

柯西数列 一个数列 a n a_n an​称为柯西数列&#xff08;Cauchy Sequence&#xff09;&#xff0c;如果对于任意的正数 ϵ > 0 \epsilon > 0 ϵ>0&#xff0c;存在一个正整数 N N N&#xff0c;使得对于所有的 m , n ≥ N m, n \geq N m,n≥N&#xff0c;都有&am…

保护模式下的内存访问(笔记)

;代码清单12-1;文件名&#xff1a;c12_mbr.asm;文件说明&#xff1a;硬盘主引导扇区代码;创建日期&#xff1a;2011-5-16 19:54&#xff1b;修改于2022-02-16 11:15;设置堆栈段和栈指针mov ax, csmov ss, axmov sp, 0x7c00;计算GDT所在的逻辑段地址mov ax, [cs: gdt_base 0x7c…

Ubuntu插无线网卡后没反应-安装驱动

工作站的网卡驱动坏了两次了…记录一下重装过程吧&#xff0c;可能对大家帮助不大&#xff0c;仅供参考。 首先检查一下网卡插上后是否被识别了&#xff0c;在终端输入 lsusb&#xff0c;得到的设备中有一个 Edimax Technology Co., Ltd Edimax AC1200 USB 这个设备就是无线网…

POI:接收上传上来的excel,解析并导入到数据库

目录 1、控制层 2、业务层&#xff08;主要逻辑&#xff09; 1、控制层 因为前端设置了只能上传1个文件&#xff0c;这里直接取一个。 RequestMapping(value "/shebeiDaoru.ctrl", method RequestMethod.POST, produces "application/json;charsetUTF-8&q…

Chatgpt、Chatglm、Gemini、通义千问、文心一言、Kimi、字节豆包 AI 写高考作文,附各大模型体验案例~

六月&#xff0c;高考季&#xff0c;AI 来帮 阅读材料 要求&#xff1a;选准角度&#xff0c;确定立意&#xff0c;明确文体&#xff0c;自拟标题&#xff1b;不要套作&#xff0c;不得抄袭&#xff1b;不得泄露个人信息&#xff1b;不少于800字。 Ai 来写作 【构建提示…

python17 字符串的常用操作

字符串常用方法 代码 字符串常用方法s i am SyLar, I LOVE YOU s1 s.capitalize()# 首字母变成大写 print(s1) s2s.lower() # 全部变成小写 print(s2) s3 s.upper()#全部变成大写 忽略大小写 推荐用这个 print(s3)title abc_def_hi print(标题:,title.title())s4 HelloWor…

SwitchHosts 简明教程

转载请标明出处&#xff1a;https://blog.csdn.net/donkor_/article/details/139743047 文章目录 一、SwitchHosts 是什么二、功能特性三、安装四、使用4.1 本地添加host4.2 本地127.0.0.1添加指定IP 五、修改 hosts 后不生效 一、SwitchHosts 是什么 SwitchHosts 是一个管理 …

以太网基础知识(三)—FEC概念以及编码原理介绍

1&#xff1a;前言 KR4(528,514) FEC表示的意思&#xff1a; KR4 RS(528,514) FEC 是一种以太网中使用的FEC&#xff08;Forward Error Correction&#xff09;编码方案。在这个方案中&#xff0c;采用的是Reed-Solomon (RS) 编码算法&#xff0c;它被设计用于提高数据传输的…