爬虫的一些知识罗列

栏目: Python · 发布时间: 6年前

内容简介:用我自己的话来总结就是通过模拟客户端访问服务器获取数据的工具。爬虫的简易模型如下:可以当做检索的清单图片是我以前学习爬虫的时候收藏的,具体来源已经记不得了

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

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

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

可以当做检索的清单

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

爬虫的一些知识罗列

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

爬虫的一些知识罗列

爬虫技巧分享

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

robots.txt

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

User-agent
Request-rate: 1/1
Crawl-delay: 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 cURLbash
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字段+白名单来动态设置的)

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


以上所述就是小编给大家介绍的《爬虫的一些知识罗列》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Math Adventures with Python

Math Adventures with Python

Peter Farrell / No Starch Press / 2018-11-13 / GBP 24.99

Learn math by getting creative with code! Use the Python programming language to transform learning high school-level math topics like algebra, geometry, trigonometry, and calculus! In Math Adventu......一起来看看 《Math Adventures with Python》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具