返回顶部
首页 > 资讯 > 后端开发 > Python >Python爬虫有哪些高频面试题
  • 879
分享到

Python爬虫有哪些高频面试题

2023-06-02 04:06:48 879人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python爬虫有哪些高频面试题”,在日常操作中,相信很多人在python爬虫有哪些高频面试题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python爬虫有哪些高频面试题”的疑惑有所帮助!

这篇文章主要介绍“python爬虫有哪些高频面试题”,在日常操作中,相信很多人在python爬虫有哪些高频面试题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python爬虫有哪些高频面试题”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

为什么 requests 请求需要带上 header?

原因是:模拟浏览器,欺骗服务器,获取和浏览器一致的内容

header 的形式:字典

headers = {"User-Agent": "Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWEBKit/537.36(Khtml, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}

用法: requests.get(url,headers=headers)

谈一谈你对 selenium 和 Phantomjs 了解

Selenium 是一个Web 的自动化测试工具,可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。Selenium 自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用。但是我们有时候需要让它内嵌在代码中运行,所以我们可以用一个叫 PhantomJS 的工具代替真实的浏览器。Selenium库里有个叫 WebDriver 的api。WebDriver 有点儿像可以加载网站的浏览器,但是它也可以像BeautifulSoup 或者其他Selector 对象一样用来查找页面元素,与页面上的元素进行交互 (发送文本、点击等),以及执行其他动作来运行网络爬虫。

PhantomJS是一个基于 Webkit 的“无界面”(headless)浏览器,它会把网站加载到内存并执行页面上的 javascript,因为不会展示图形界面,所以运行起来比完整的浏览器要高效。相比传统的Chrome或 Firefox 浏览器等,资源消耗会更少。

如果我们把 Selenium 和 PhantomJS 结合在一起,就可以运行一个非常强大的网络爬虫了,这个爬虫可以处理 JavaScrip、Cookie、headers,以及任何我们真实用户需要做的事情。主程序退出后,selenium 不保证 phantomJS 也成功退出,最好手动关闭 phantomJS 进程。(有可能会导致多个 phantomJS 进程运行,占用内存)。WebDriverWait 虽然可能会减少延时,但是目前存在 bug(各种报错),这种情况可以采用 sleep。phantomJS爬数据比较慢,可以选择多线程。如果运行的时候发现有的可以运行,有的不能,可以尝试将 phantomJS 改成 Chrome。

写一个邮箱地址的正则表达式

[A-Za-z0-9\\u4e00-\\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$

你遇到的反爬虫策略有哪些?及应对策略有什么?

  • 通过headers反爬虫

  • 基于用户行为的发爬虫:例如同一IP短时间内多次访问同一页面,或者同一账户短时间内多次进行相同操作

  • 动态网页反爬虫,例如:我们需要爬取的数据是通过ajax请求得到,或者通过JavaScript生成的

  • 对部分数据进行加密处理的,例如:我们要抓的数据部分能够抓到,另外的部分加密处理了,是乱码

  • 应对策略:

对于基本网页的抓取可以自定义headers,添加headers的数据,代理来解决有些网站的数据抓取必须进行模拟登陆才能抓取到完整的数据,所以要进行模拟登陆。对于限制抓取频率的,可以设置抓取的频率降低一些,对于限制ip抓取的可以使用多个代理ip进行抓取,轮询使用代理针对动态网页的可以使用selenium+phantomjs进行抓取,但是比较慢,所以也可以使用查找接口的方式进行抓取。对部分数据进行加密的,可以使用selenium进行截图,饭后使用python自带的 pytesseract库进行识别,但是比较慢最直接的方法是找到加密的方法进行逆向推理。

分布式爬虫原理?

scrapy-redis实现分布式,其实从原理上来说很简单,这里为描述方便,我们把自己的核心服务器称为 master,而把用于跑爬虫程序的机器称为 slave。

我们知道,采用 scrapy 框架抓取网页,我们需要首先给定它一些 start_urls,爬虫首先访问 start_urls里面的 url,再根据我们的具体逻辑,对里面的元素、或者是其他的二级、三级页面进行抓取。而要实现分布式,我们只需要在这个 starts_urls 里面做文章就行了。

我们在 master 上搭建一个 Redis 数据库(注意这个数据库只用作 url 的存储,不关心爬取的具体数据,不要和后面的 mongodb 或者 mysql 混淆),并对每一个需要爬取的网站类型,都开辟一个单独的列表字段。通过设置 slave 上 scrapy-redis 获取 url 的地址为 master 地址。这样的结果就是,尽管有多个 slave,然而大家获取 url 的地方只有一个,那就是服务器 master 上的 redis 数据库。并且,由于 scrapy-redis 自身的队列机制,slave 获取的链接不会相互冲突。这样各个 slave 在完成抓取任务之后,再把获取的结果汇总到服务器上(这时的数据存储不再在是 redis,而是 mongoDB 或者Mysql等存放具体内容的数据库了)这种方法的还有好处就是程序移植性强,只要处理好路径问题,把 slave 上的程序移植到另一台机器上运行,基本上就是复制粘贴的事情。

pythoon2.x 中urllib和urllib2的区别?

异同:都是做url请求的操作的,但是区别很明显。urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。这意味着,你不可以通过urllib模块伪装你的User Agent字符串等(伪装浏览器)。urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有。这是为何urllib常和urllib2一起使用的原因。模块比较优势的地方是urlliburllib2.urlopen可以接受Request对象作为参数,从而可以控制Http Request的header部。但是urllib.urlretrieve函数以及urllib.quote等一系列quote和unquote功能没有被加入urllib2中,因此有时也需要urllib的辅助。

robots协议是什么?

Robots协议(也称为爬虫协议、爬虫规则、机器人协议等)也就是robots.txt,网站通过robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

Robots协议是网站国际互联网界通行的道德规范,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯。因其不是命令,故需要搜索引擎自觉遵守。

什么是爬虫?

爬虫是请求网站并提取数据的自动化程序

爬虫的基本流程?

1、通过http库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应2、如果服务器能正常响应,会得到一个Response,Response的内容比啊是索要获取的页面内容3、解析内容:正则表达式、页面解析库、JSON4、保存数据:文本或者存入数据库

什么是Request和Response?

本地 向 服务器 发送Request,服务器根据请求返回一个Response,页面就显示在页面上了

浏览器就发送消息给该网址所在的服务器,这个过程叫做Http Request

服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应处

理,然后把消息回传给浏览器,这个过程叫做HTTP Response

浏览器收到服务器的Response消息后,会对信息进行相应处理,然后显示

到此,关于“Python爬虫有哪些高频面试题”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Python爬虫有哪些高频面试题

本文链接: https://lsjlt.com/news/228795.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python爬虫有哪些高频面试题
    这篇文章主要介绍“Python爬虫有哪些高频面试题”,在日常操作中,相信很多人在Python爬虫有哪些高频面试题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python爬虫有哪些高频面试题”的疑惑有所帮助!...
    99+
    2023-06-02
  • Python爬虫高频率面试题有哪些
    本篇内容主要讲解“Python爬虫高频率面试题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python爬虫高频率面试题有哪些”吧!1 . Request中包含什么呢?1、请求方式:主要有...
    99+
    2023-06-02
  • Python的爬虫面试题有哪些
    本篇内容主要讲解“Python的爬虫面试题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python的爬虫面试题有哪些”吧!一、 Python 基本功简述Python 的特点和优点Pyth...
    99+
    2023-06-02
  • Python高频面试题有哪些
    本篇内容介绍了“Python高频面试题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一. Given an array of inte...
    99+
    2023-06-02
  • Python有哪些高频面试题
    本篇内容主要讲解“Python有哪些高频面试题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python有哪些高频面试题”吧!一. 将字符串 “k:1 |k1:2|k2:3|k3:4”,处理成字...
    99+
    2023-06-02
  • Python的高频面试题有哪些
    这篇文章主要讲解了“Python的高频面试题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python的高频面试题有哪些”吧!一. 如何提高爬取效率?爬虫下载慢主要原因是阻塞等待发往网...
    99+
    2023-06-02
  • Python有哪些高频的面试题
    这篇文章主要介绍“Python有哪些高频的面试题”,在日常操作中,相信很多人在Python有哪些高频的面试题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python有哪些高频的面试题”的疑惑有所帮助!接下来...
    99+
    2023-06-02
  • Redis高频面试题有哪些
    这篇文章将为大家详细讲解有关Redis高频面试题有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是RedisRedis(Remote Dictionary Ser...
    99+
    2024-04-02
  • CSS高频面试题有哪些
    这篇文章主要讲解了“CSS高频面试题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS高频面试题有哪些”吧!一.什么是 BFC机制BFC(Block...
    99+
    2024-04-02
  • Redis有哪些高频面试题
    本篇内容介绍了“Redis有哪些高频面试题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、说说 Redis 都有哪些应用场景?缓存:这应该...
    99+
    2023-06-04
  • Redis中有哪些高频面试题
    这篇文章将为大家详细讲解有关Redis中有哪些高频面试题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Redis 为什么这么快?很多人只知道是 K/V NoSQl 内存数...
    99+
    2024-04-02
  • MySQL的高频面试题有哪些
    本篇内容介绍了“MySQL的高频面试题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.什么是关系型...
    99+
    2024-04-02
  • Redis的高频面试题有哪些
    本篇内容主要讲解“Redis的高频面试题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis的高频面试题有哪些”吧!1、说说 Redis 都有哪些应用...
    99+
    2024-04-02
  • Redis高频的面试题有哪些
    这篇文章主要介绍“Redis高频的面试题有哪些”,在日常操作中,相信很多人在Redis高频的面试题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redis高频的面试题有...
    99+
    2024-04-02
  • 2021年有哪些Redis高频面试题
    本篇文章给大家分享的是有关2021年有哪些Redis高频面试题,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。面试官心理分析从面试官的角度分析,...
    99+
    2024-04-02
  • Python爬虫问题有哪些
    本篇内容主要讲解“Python爬虫问题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python爬虫问题有哪些”吧! 现在爬虫好找工作吗?如果是一年前我可能会说爬虫的工作还是挺好找的,但现...
    99+
    2023-06-02
  • python爬虫常见面试题(一)
    前言   之所以在这里写下python爬虫常见面试题及解答,一是用作笔记,方便日后回忆;二是给自己一个和大家交流的机会,互相学习、进步,希望不正之处大家能给予指正;三是我也是互联网寒潮下岗的那批人之一,为了找工作而做准备。 一、题目部分 ...
    99+
    2023-01-30
    爬虫 面试题 常见
  • 高频率Vue面试题及答案有哪些
    这篇文章主要介绍“高频率Vue面试题及答案有哪些”,在日常操作中,相信很多人在高频率Vue面试题及答案有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”高频率Vue面试题及答案有哪些”的疑惑有所帮助!接下来...
    99+
    2023-07-05
  • web前端高频面试题及答案有哪些
    这篇文章主要介绍了web前端高频面试题及答案有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇web前端高频面试题及答案有哪些文章都会有所收获,下面我们一起来看看吧。1.vue双向数据绑定的原理?mvvm场景...
    99+
    2023-07-04
  • web前端高频知识点面试题有哪些
    今天小编给大家分享一下web前端高频知识点面试题有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。var、let、cons...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作