目录
爬虫有什么分类
通用爬虫
通用爬虫是搜索引擎(Baidu、Google、Yahoo等)“抓取系统”的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。 简单来讲就是尽可能的;把互联网上的所有的网页下载下来,放到本地服务器里形成备分,在对这些网页做相关处理(提取关键字、去掉广告),最后提供一个用户检索接口。
聚焦爬虫
聚焦爬虫是根据指定的需求抓取网络上指定的数据。例如:获取豆瓣上电影的名称和影评,而不是获取整张页面中所有的数据值。
增量式爬虫
通过爬虫程序监测某网站数据更新的情况,以便可以爬取到该网站更新出的新数据。
爬虫的基本流程
1、发起请求
使用http库向目标站点发起请求,即发送一个Request
Request包含:请求头、请求体等
2、获取响应内容
如果服务器能正常响应,则会得到一个Response
Response包含:html,json,图片,视频等
3、解析内容
解析html数据:正则表达式,第三方解析库如Beautifulsoup,pyquery等
解析json数据:json模块
解析二进制数据:以b的方式写入文件
4、保存数据
数据库
文件
爬取网站需要注意什么
判断数据源头
动态请求还是静态请求(豆瓣 肯德基实列)
针对反爬策略做对应的处理
分析页面间数据的关系 比如下层页面的数据是由上层数据关联(药间总局实列)
注意字符编码的问题
什么是数据解析 爬虫一般用什么来处理
概念:就是将一组数据中的局部数据进行提取
作用:来实现聚焦爬虫
正则
bs4
bs4的解析原理
实例化一个BeautifulSoup的对象,并且将即将被解析的页面源码数据加载到该对象中
调用BeautifulSoup对象中的相关属性和方法进行标签定位和数据提取
找标签 层级选择器 find
xpath
树形对象
你在爬虫的过程中遇到什么问题
数据乱码的问题
解决 调整编码格式
cook验证机制
先动态获取cook在去请求想要的数据
ip验证问题
使用代理 和代理池
动态 数据 安全验证问题
在页面找
验证码问题
利用在线打码 解析
效率过低问题
使用线程池 协程 回调函数
图片懒加载
属性不对
scrapy框架是
- 异步的爬虫框架。
- 高性能的数据解析,持久化存储,全栈数据的爬取,中间件,分布式
- 框架:就是一个集成好了各种功能且具有很强通用性的一个项目模板。
列举您使用过的python网络爬虫所用到的网络数据包
requests,urllib2,urllib
列举您使用过的python网络爬虫所用到的解析数据包
xpath, beautifulsoup
域名和IP之间有什么关系,如何查看某个域名对应的所有IP?
国际互联网(Internet)上有成千百万台主机(host),为了区分这些主机,人们给每台主机都分配了一个专门的“地址”作为标识,称为IP地址
由于IP地址全是些的数字,为了便于用户记忆,Internet上引进了域名服务系统DNS(Domain Name System)。
当您键入某个域名的时候,这个信息首先到达提供此域名解析的服务器上,再将此域名解析为相应网站的IP地址。完成这一任务的过程就称为域名解析。
robots协议是什么?
Robots协议(也称为爬虫协议、爬虫规则、机器人协议等)也就是robots.txt,网站通过robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
Robots协议是网站国际互联网界通行的道德规范,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯。因其不是命令,故需要搜索引擎自觉遵守。
分布式去重原理
对于每一个url的请求,调度器都会根据请求得相关信息加密得到一个指纹信息,并且将指纹信息和set()集合中的指纹信息进行比对,如果set()集合中已经存在这个数据,就不在将这个Request放入队列中。如果set()集合中没有存在这个加密后的数据,就将这个Request对象放入队列中,等待被调度。