爬虫的一些知识罗列

什么是爬虫

用我自己的话来总结就是通过模拟客户端访问服务器获取数据的工具。爬虫的简易模型如下:

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

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

可以当做检索的清单

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

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

爬虫技巧分享

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

robots.txt

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

  • 允许的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都有。使用起来也很简单

(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字段+白名单来动态设置的)


作为笔记记录!感谢您与我一起虚度时光

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值