爬虫的一些知识罗列

什么是爬虫

用我本身的话来总结就是经过模拟客户端访问服务器获取数据的工具。爬虫的简易模型以下:前端

  • 网站服务器是咱们要访问的目标,主要用来制定访问规则(也就是咱们应该如何模拟能够访问该服务器的用户以及如何访问网站上的数据)
  • 爬虫经过http或者https协议与网站服务器交互
  • 咱们作的主要工做是在定制爬虫脚本,尽量的模仿客户端的访问
  • 本地存储的选择不少,能够是文件的形式,也能够存储到数据库中

爬虫可能会涉及的技术罗列

能够当作检索的清单python

图片是我之前学习爬虫的时候收藏的,具体来源已经记不得了chrome

下面这张是简易版的参考,打钩的是我已经使用过和掌握的数据库

爬虫技巧分享

因为网站开发人员使用技术不一样和网站运维人员对访问的限制没有固定的爬虫模板,并且爬虫是须要长期维护的工程,一旦网页中的一个class属性发生改变或者api接口参数变化都须要修改爬虫。可是一些技巧是能够借鉴的。json

robots.txt

robots.txt是与搜索引擎约定的君子协议,他可以可咱们提供一些网站的信息。 下面是掘金的robots.txt ,咱们能够收获如下信息api

  • 容许的User-agent是匹配全部,有时候爬虫失效多是UA的问题,这里也许能找到答案
  • Request-rate: 1/1 建议1秒钟爬取一个页面 (那我想你设置延时应该内心有数了)
  • Crawl-delay: 5 建议爬虫询问的频率是5秒一次
  • Disallow 是不容许爬取的目录,这里基本上能够告诉咱们有哪些子路径
User-agent: *
Request-rate: 1/1
Crawl-delay: 5

Disallow: /timeline
Disallow: /submit-entry
Disallow: /new-entry
Disallow: /edit-entry
Disallow: /notification
Disallow: /subscribe/subscribed
Disallow: /user/settings
Disallow: /reset-password
Disallow: /drafts
Disallow: /editor
Disallow: /user/invitation
Disallow: /user/wallet
Disallow: /entry/*/view$
Disallow: /auth
Disallow: /oauth
Disallow: /zhuanlan/*?sort=newest
Disallow: /zhuanlan/*?sort=comment
Disallow: /search
Disallow: /equation
复制代码

curl

curl是命令行下的文件传输工具,这里拿出来是由于发现了一个好的工具 curl.trillworks.com/#python 能够直接将curl脚本转成python requests库的请求方式。浏览器

使用方法:
(1)打开chrome的开发者工具
(2)选择想要访问的连接,而后 copy -> copy as cURL(bash)
(3)粘贴到上面的那个网址中就能够获得简易爬虫脚本
复制代码

使用 Katalon Recorder

有时候咱们会使用Selenium工具模拟浏览器进行数据爬取,可是苦于本身写与浏览器交互的脚本。这里推荐一个工具 Katalon Recorder能够方便的产生交互脚本,在模拟搜索、模拟登录、滚动、点击的时候都颇有效。是一个浏览器插件,chrome和Firefox都有。使用起来也很简单bash

(1) 先new一个新的录制
(2) 开始录制 record,这时候你能够与网页交互,这个插件会记录你的操做(从加载网页到中止录制)
(3) 中止录制以后,点击export,选择本身喜欢的语言导出就行
复制代码

下面这一段是咱们实际使用的时候须要用到的,这样就不用本身去编写交互脚本了服务器

一种简单的反爬技术

目前不少博客网站的next操做是根据上一次请求的最后一条数据的某个id做为下一次请求的参数,不仔细看还发现不了(也亏返回的json字段命名语义化),典型网站有简书和掘金,文章列表页,请求的时候是根据上一次请求的最后一篇文章的信息做为下一次获取数据的请求参数。运维

js2py

蛮荒时代遇到js加密的网页爬取是将混淆以后的js加密代码强行还原为py代码,很累~~如今有了js2py这个方便的python库,可以轻松不少,js转py工具

移动端抓取替代网页端

很多网站移动端的接口访问比网页端简单多,反爬也弱一些,好比拉钩网。 这里有一个知识点:很多网站在处理请求的时候会根据UA来判断客户端类型,而后返回PC端页面或者移动端页面(案例:拉钩网) 利用这个,咱们能够将chrome的开发者模式调节为手机模式,这样就能够获取到移动端的接口,你会发现页面也简洁了接口也简单了~

注:随着前端技术的发展,适配多端的页面也开始流行,因此前端牛逼

两个思考

为何爬虫要设置User-Agent

  • 统计访问频率的时候有一部分是依赖于ua
  • 有时候须要根据ua返回不一样的代码
  • 对于前端还须要拿去判断使用兼容性代码

host

不少时候会设置HOST这个字段,其实能够这样理解,咱们访问的时候使用的是域名,可是http协议访问的时候使用的是ip,存在一台服务器上有多个服务,这样多个域名会解析成一个ip,当服务器接收到这个请求的时候他须要考虑由哪一个服务来处理(正常是反向代理判断请求的路径而后正则匹配转发请求),可是我本身假想了一下也能够用host来判断转发(这个启发来源于Access-Control-Allow-Origin只能设置一个值,当须要设置多个值的时候我使用host字段+白名单来动态设置的)


做为笔记记录!感谢您与我一块儿虚度时光

相关文章
相关标签/搜索