爬行动物(也称为网络蜘蛛、网络机器人)是模拟客户端发送互联网请求、接收请求响应,并根据一定规则自动捕获互联网信息的程序。
原则上,如果浏览器(客户端)能做的话,爬虫类也能做。
教程和代码,还有视频,可以在-代码草莓上看到
根据攀登网站的数量,将爬行动物分类如下。
常见爬行动物是指搜索引擎中的爬行动物、焦点爬行动物。 对于特定站点的爬虫Robots协议,站点使用Robots协议告诉搜索引擎哪些页面是可捕获的,哪些页面是不可捕获的,这只是一个道德约束。
浏览器积极地请求js、css等内容。 js修改页面的内容。 js也可以重新发送请求。 上次浏览器渲染的内容位于elements中,其中包含与css、图像、js、url地址相对应的响应等。
但是在爬行动物中,爬行动物只需要请求url地址,并相应地获得与该url地址相对应的响应。 浏览器渲染的页面和爬行动物请求的页面不同。 因此,爬行动物需要根据与url地址对应的响应进行数据的提取。
url的格式: scheme ://host [ : port # ]/path//? query-string][#anchor]
scheme :协议(例如,http、https、ftp )主机)服务器IP地址或域名port )服务器端口。在经过协议的默认端口时(例如80或443 ) path )
http:httpssl (安全套接字层),默认端口号: 443 (https比http安全,但性能较低) )。
HTTP常见请求标头
主机和端口号(Host )连接(链接类型(Upgrade-Insecure-Requests )升级到HTTPS请求(User-Agent )浏览器名称) (Accept ) 文件编解码器格式(cookie ) x-requested-with : xmlhttprequest (Ajax )异步请求)常见请求方法
我刚刚总结了GETpost2018最新的0基础入门和高级教程,无私地分享,学习Python和QUN。 可以在二二七、四三五、四五零买到。 附件包含开发工具和安装包以及有关系统学习路线图获取请求的其他注释。
GET请求可以缓存GET请求被保存在浏览器的历史记录中。 GET请求可以存储为书签。 GET请求在处理敏感数据时不能使用GET请求。 有长度限制的GET请求应该只用于关于检索与POST请求相关的数据的其他注释。
不缓存开机自检请求。开机自检请求不会保留在浏览器历史记录中。开机自检无法另存为书签。开机自检请求没有数据长度要求
状态代码(status code )。
一般状态代码:
200 :成功302 :临时迁移到新url307 :临时新url404:not found500 :服务器内部错误代理IP的分类:
透明(Transparent Proxy )、透明可以直接“隐藏”你的IP地址,但可以从HTTP_X_FORWARDED_FOR中查到你是谁。
匿名代理(Anonymous Proxy )在匿名代理方面比透明代理稍有进步。 别人只知道你用了特工,不知道你是谁。
混淆代理(Distorting Proxies )和匿名代理一样,使用混淆代理时,其他人可以知道他们在使用代理,但会得到假的IP地址,并进行更真实的伪装。
高隐藏代理(Elite proxy或High Anonymity Proxy )是最好的选择,因为高隐藏代理不会让别人知道你在使用代理。
Scrapy是一个用于获取网站数据和提取结构性数据的APP应用框架,只需实现少量代码就可以快速捕获。
Scrapy使用Twisted['twstd]异步网络框架来缩短下载时间。
异步:发出调用后,无论结果是否存在无阻塞,都会直接返回此调用。 值得注意的是程序在等待调用结果(消息、返回值)时的状态,这意味着在没有立即得到结果之前,该调用不会阻塞当前线程。 脚本进程
从上图派生出下图,我个人觉得更容易理解
可以将流程描述为:
调度程序从requests--引擎-----下载中间件----下载程序发送请求,获取响应----下载中间件---恩
scrapy
项目实现流程: 创建一个scrapy项目:scrapy startproject +<项目名字>生成一个爬虫:scrapy genspider +<爬虫名字> + <允许爬取的域名>提取数据:完善spider,使用xpath等方法保存数据:pipeline中保存数据scrapy.cfg :项目的配置文件mySpider/ :项目的Python模块,将会从这里引用代码mySpider/items.py :项目的目标文件mySpider/pipelines.py :项目的管道文件mySpider/settings.py :项目的设置文件mySpider/spiders/ :存储爬虫代码目录认识scrapy的debug信息
每次程序启动后,默认情况下,终端都会出现很多的debug信息,那么下面我们来简单认识下这些信息
scrapy shell的使用
response.url:当前响应的url地址response.request.url:当前响应对应的请求的url地址response.headers:响应头response.body:响应体,也就是html代码,默认是byte类型response.requests.headers:当前响应的请求头settings.py中的重点字段和内涵
USER_AGENT 设置uaROBOTSTXT_OBEY 是否遵守robots协议,默认是遵守CONCURRENT_REQUESTS 设置并发请求的数量,默认是16个DOWNLOAD_DELAY 下载延迟,默认无延迟COOKIES_ENABLED 是否开启cookie,即每次请求带上前一次的cookie,默认是开启的DEFAULT_REQUEST_HEADERS 设置默认请求头SPIDER_MIDDLEWARES 爬虫中间件,设置过程和管道相同DOWNLOADER_MIDDLEWARES 下载中间件