爬虫面试题

1,xpath关键字position和contian的区别

psotiton:通过标签的具体所有位置获取标签内容

contian:获取某个属性含有某个字段的标签.

2, scrapy框架各模块的作用

item.py,明确需要提取的数据
spiders/xxxx.py ,编写爬虫文件,处理请求和响应,以及提取数据(yield item )
pipelines.py , 编写管道文件,处理spider返回item,比如本地持久化存储等…
settings,py,启动管道组件,ITEM_PIPELINES 以及其他相关设置

3, python处理js反爬过程主要是在headers请求头中添加对网页中的cookie字段进行处理的数据信息.

4,高并发爬虫

高并发爬虫主要通过asynci进行异步处理操作以及通过aiohttp模块对多个url请求进行处理

5,如何将爬取的数据保存到本地或者数据库当中

管道文件中一个管道类对应的是将数据存储到一种平台,爬虫文件提交的item只会给管道文件中第一个被执行的管道类接受,process_item中的return表示将item传递给下一个即将被执行的管道类

6,反爬机制主要包含对多个ip进行反爬处理,防止ip被封,多个ua请求头以及对登录时的验证码进行破解已实现登录功能,

破解验证码可以通过①ddddocr模块.②pytesseract模块,③通过冰拓第三方网站的API进行验证码的识别并破解,实现模拟登录,④先将验证码进行二值化以及灰度化处理,然后通过百度api模块对验证码进行识别处理.

7,分布式爬虫(提升爬取数据的效率)

1, 安装scrapy_redis组件,给原生的scrapy框架提供可以被共享的管道以及调度器,

2, 修改爬虫文件,添加一个新的属性,可以被共享的调度器队列名称,编写数据解析相关操作,

3, 将当前爬虫类的父类修改成RedisCrawSpider

3, 修改配置文件,指定使用可以被共享的管道,指定调度器以及redis服务,

4, 配置redis

8,增量式爬虫: 监测网站数据更新情况,只会爬取网站最新更新出来的数据

-------------本文结束感谢您的阅读-------------