Bob's Blog

Web开发、测试框架、自动化平台、APP开发、机器学习等

返回上页首页

Python爬虫(一)基础准则和基本概念



爬虫、网络机器人、spider、crawler,都是一个东西,就是一些程序对目标进行有规律有目的性的自动的信息收集。当然实际上爬虫并不会真正去到目的地,但是会发送请求过去,并拿到回复,回复可能是空,也可能是html、json等。

收集到的信息数据可被人为使用或者被其他程序再次筛选和整理。使用爬虫有很多场景,比如我在xx网有个会员,但我懒得一页页翻,于是我把账号信息给爬虫程序,爬虫自动在xx网上把我想要的漫画章节分批下载下来,我睡个觉起来就可以看漫画了;比如google的搜索引擎会抓取我在知乎上的新回答,可能过几天后我去google就能搜索到我当时回答的网页快照。

行为准则:

爬虫很有用,但也需要有一些准则,以免对自己和他人造成不好的影响。正所谓练武先练德,我们也需要了解什么该做,什么不该做,把专业技术应用在合理的地方,给自己提供便利,也不造成破坏。

1)遵循robots协议。robots.txt是一种存放于网站根目录下的ASCII编码的文本文件,它会告诉爬虫该网站中哪些是不能被获取的,哪些是可以被获取的,哪些爬虫被禁止。那么当我们看到这个文件后,应遵循里面的内容,不要再探寻更多;当然如果你建立了一个新网站,想要搜搜引擎来抓取,那么就放开限定。

2) 不要获取机密信息和私人信息。如果因为兴趣写了爬虫却抓取了别人的身份信息或者私密信件等,这个可是违法的,搞不好就被关进去被狱头大哥修理了。所以要尽量避免有这类型操作。就像我们也不想自己的个人信息满天飞吧,我也非常讨厌那些骚扰推销电话。至少自己不作恶。

3) 不要请求过多或过于频繁。因为不同的网站负荷不一样,如果有好的硬件条件也不要请求太多太频繁,否则这种类似DDos的行为仍然会让你去拜会狱头大哥。轻微的结果会让你的账号或ip被封,比如你猛的去抓取淘宝,可能账号被封禁了,可能你的ip段在一段时间内就访问不了淘宝了。

----------------------------

基本概念:

当我们用浏览器打开一个页面时,浏览器会记录此时我的一些信息,并帮助我发送请求,拿到回复并渲染展示。其实简单的爬虫也可以想象成这样的一个过程,只是省略了人和浏览器,爬虫可以伪造成不同的设备和个人信息去发送请求和接受回复。

我们打开chrome,按F12弹出dev tool,再输入baidu.com去访问,在network tab下就能看到我们做了请求的操作,百度返回了html,图标,css样式文件等等。

如图所示,我们做了http请求并受到回复。那么我们也就需要了解http的一些概念。参考:http维基百科

这里介绍一部分常见的概念。

百科里面提到了有八种方法,不过我们用得最多的就是四种:get/post/put/delete

Get:请求数据和读取数据;

Post:发送数据,并交由服务器处理,并得到处理后的数据。比如我想查找淘宝上的卫衣,我就会把卫衣发送到淘宝对应的地址上,并拿到卫衣商品的数据。

Put:put和post有些类似,不过put相当于更新,因为put每次请求后都会产生同样的效果,而post则不一定。

Delete:执行删除操作。这个得地址或者api支持才行。

另外不同的状态码可以供我们处理不同的逻辑,比如200是成功,302被重定向了,404找不到,500是内部错误,我们可以考虑是不是被禁止了还是地址出错。

Content-Type这个会告诉我们返回的内容类型和编码规格。比如Content-Type: text/html; charset=utf-8意味着返回的是html并且是utf-8的格式;image/png是png图片;application/json是json数据。

User-Agent在header中,这个用得挺多的,在发送请求时,我们可以告诉对方服务器目前就是一个python-requests程序,也可以伪造成chrome浏览器,还可以伪造成iphone safari并带上ios版本和操作系统版本。类似这个地址的字符串就可以替换user-agent的内容来伪造成对应的设备:iphone user agent 服务器会根据有些agent而返回不一样的数据,比如搜索引擎需要拿到你的网站的移动设备视图,那么user agent就会是移动设备。

Token是用来传递账户信息形成登录的效果,因为有的页面是需要登录账户才会返回数据的毕竟要判断用户权限。

-----------------------

接下来我会写一系列文章来记录用python写爬虫程序。跟python有关的已经有pyspider、scrapy这类优秀的工具存在,当然也可以用requests、urllib来简单实现自己需求。我会根据自己的一些小需求来介绍爬虫的编写和应用。

下一篇:  Python爬虫(二)获取百度搜索收录结果
上一篇:  ubuntu里自启动时未执行virtualenv的原因

共有0条评论

添加评论

暂无评论