欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2020十大Python面试题,你会几个?

程序员文章站 2022-07-10 21:27:36
0 遇到过得反爬虫策略以及解决方法? 1.通过headers反爬虫 2.基于用户行为的发爬虫:(同一IP短时间内访问的频率) 3.动态网页反爬虫(通过ajax请求数据,或者通过JavaScript生成) 4.对部分数据进行加密处理的(数据是乱码) 解决方法: 对于基本网页的抓取可以自定义header ......

 

2020十大Python面试题,你会几个?

0 遇到过得反爬虫策略以及解决方法?

1.通过headers反爬虫 2.基于用户行为的发爬虫:(同一ip短时间内访问的频率) 3.动态网页反爬虫(通过ajax请求数据,或者通过javascript生成) 4.对部分数据进行加密处理的(数据是乱码)

解决方法:

对于基本网页的抓取可以自定义headers,添加headers的数据 使用多个代理ip进行抓取或者设置抓取的频率降低一些, 动态网页的可以使用selenium + phantomjs 进行抓取 对部分数据进行加密的,可以使用selenium进行截图,使用python自带的pytesseract库进行识别,但是比较慢最直接的方法是找到加密的方法进行逆向推理。

1 urllib 和 urllib2 的区别?

  • urllib 和urllib2都是接受url请求的相关模块,但是urllib2可以接受一个request类的实例来设置url请求的headers,urllib仅可以接受url。urllib不可以伪装你的user-agent字符串。
  • urllib提供urlencode()方法用来get查询字符串的产生,而urllib2没有。这是为何urllib常和urllib2一起使用的原因。

2 列举网络爬虫所用到的网络数据包,解析包?

  • 网络数据包 urllib、urllib2、requests
  • 解析包 re、xpath、beautiful soup、lxml

3 简述一下爬虫的步骤?

  1. 确定需求;
  2. 确定资源;
  3. 通过url获取网站的返回数据;
  4. 定位数据;
  5. 存储数据。

4 遇到反爬机制怎么处理?

反爬机制:

headers方向 判断user-agent、判断referer、判断cookie。 将浏览器的headers信息全部添加进去 注意:accept-encoding;gzip,deflate需要注释掉

5 常见的http方法有哪些?

  • get:请求指定的页面信息,返回实体主体;
  • head:类似于get请求,只不过返回的响应中没有具体的内容,用于捕获报头;
  • post:向指定资源提交数据进行处理请求(比如表单提交或者上传文件),。数据被包含在请求体中。
  • put:从客户端向服务端传送数据取代指定的文档的内容;
  • delete:请求删除指定的页面;
  • connnect:http1.1协议中预留给能够将连接方式改为管道方式的代理服务器;
  • options:允许客户端查看服务器的性能; trace:回显服务器的请求,主要用于测试或者诊断。

6 说一说redis-scrapy中redis的作用?

它是将scrapy框架中scheduler替换为redis数据库,实现队列管理共享。

优点:

  1. 可以充分利用多台机器的带宽;
  2. 可以充分利用多台机器的ip地址。

7 遇到的反爬虫策略以及解决方法?

  1. 通过headers反爬虫:自定义headers,添加网页中的headers数据。
  2. 基于用户行为的反爬虫(封ip):可以使用多个代理ip爬取或者将爬取的频率降低。
  3. 动态网页反爬虫(js或者ajax请求数据):动态网页可以使用 selenium + phantomjs 抓取。
  4. 对部分数据加密处理(数据乱码):找到加密方法进行逆向推理。

8 如果让你来防范网站爬虫,你应该怎么来提高爬取的难度 ?

  1. 判断headers的user-agent;
  2. 检测同一个ip的访问频率;
  3. 数据通过ajax获取;
  4. 爬取行为是对页面的源文件爬取,如果要爬取静态网页的html代码,可以使用jquery去模仿写html。

9 scrapy分为几个组成部分?分别有什么作用?

分为5个部分;spiders(爬虫类),scrapy engine(引擎),scheduler(调度器),downloader(下载器),item pipeline(处理管道)。

  • spiders:开发者自定义的一个类,用来解析网页并抓取指定url返回的内容。
  • scrapy engine:控制整个系统的数据处理流程,并进行事务处理的触发。
  • scheduler:接收engine发出的requests,并将这些requests放入到处理列队中,以便之后engine需要时再提供。
  • download:抓取网页信息提供给engine,进而转发至spiders。
  • item pipeline:负责处理spiders类提取之后的数据。 比如清理html数据、验证爬取的数据(检查item包含某些字段)、查重(并丢弃)、将爬取结果保存到数据库中

10 简述一下scrapy的基本流程?

 

2020十大Python面试题,你会几个?

 

scrapy分为9个步骤:

  1. spiders需要初始的start_url或则函数stsrt_requests,会在内部生成requests给engine;
  2. engine将requests发送给scheduler;
  3. engine从scheduler那获取requests,交给download下载;
  4. 在交给dowmload过程中会经过downloader middlewares(经过process_request函数);
  5. dowmloader下载页面后生成一个response,这个response会传给engine,这个过程中又经过了downloader middlerwares(经过process_request函数),在传送中出错的话经过process_exception函数;
  6. engine将从downloader那传送过来的response发送给spiders处理,这个过程经过spiders middlerwares(经过process_spider_input函数);
  7. spiders处理这个response,返回requests或者item两个类型,传给engine,这个过程又经过spiders middlewares(经过porcess_spider_output函数);
  8. engine接收返回的信息,如果使item,将它传给items pipeline中;如果是requests,将它传给scheduler,继续爬虫;
  9. 重复第三步,直至没有任何需要爬取的数据
    最后注意:不管你是为了python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你没有2020最新python入门到高级实战视频教程,可以去小编的python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新python教程项目,还可以跟老司机交流讨教!

    本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。