首页 存档 技术 查看内容

闲话「爬虫」

2018-3-30 13:00 |来自: 互联网 298 0

摘要: 春节的时候总喜欢把自己锁在房间或者宾馆一连几天不必外出。安静的做自己的事情,看自己的书,撩自己的妹。 有一句话,很好玩亦是对的: 每个人在出生的时候都是原创。但,大多数人活着活着就把自己活成了盗版。 ...

春节的时候总喜欢把自己锁在房间或者宾馆一连几天不必外出。安静的做自己的事情,看自己的书,撩自己的妹。


有一句话,很好玩亦是对的:

每个人在出生的时候都是原创。但,大多数人活着活着就把自己活成了盗版。


不希望节日让大家觉得,这个世界寒来暑往,是循环模式。

毕竟,这个世界正在流逝,是狂奔模式。


所以cos就不问各位看官新年好了!直接言归正传。今天讲讲爬虫吧。也许放假的时候你还能挖点儿什么嗨皮的东西出来。


谈起矿工,很多看官的第一反应大概是那些挖比特币的机器,可是随着比特币的挖取难度增大,这些矿工的产出变得越来越低了。简单对比不难发现,网络爬虫应该是一个输出非常稳定的金牌矿工啦。比如:Google,百度等等,一大堆的互联网土豪其财富都是由网络爬虫挖取而来滴呢,那根据目前的情况来看这笔财富还在不断的增长的……


网络爬虫的作用是:抓取某个指定网页的数据并存储在本地,Google、百度这俩哥们的主要收入来源就是搜索引擎,搜索引擎的数据,全是网络爬虫不分昼夜地从互联网上抓取回来的,如此说来网络爬虫其实就是这些公司的金牌矿工。


问题来了,这些爬虫是怎样寻宝的呢?

原理相对简单些,第一步,我们给爬虫几个初始的URL,爬虫把这些链接的网页抓取回来之后,通过对网页进行分析,可将抓取到的数据分为两部分:

①网页的有效内容,可以用来建立搜索关键词的索引,这一部分数据先存储起来;

②网页中的URL链接,这些链接继续成为下一轮爬虫抓取的目标网页。

这样无限循环,就可以抓取越来越多的互联网数据。


嗯,原理听起来是不是很简单,但是真的要这么干,一个优秀的爬虫必须要解决这几个问题的:


  1. 一个优秀的黄金矿工,需要有从乱石堆中挑选出黄金的本领,一个优秀的爬虫,必须能够从页面中解析出正确的URL;

  2. 一个优秀的黄金矿工,需要有很快的挖矿速度,一个优秀的爬虫,同样必须具备很快的抓取速度;

  3. 一个优秀的黄金矿工,总能选择离自己最近的矿石,一个优秀的爬虫,需要具备挑选最有价值的页面进行抓取的能力;

  4. 一个优秀的黄金矿工,可以适应各种不同的矿场,一个优秀的爬虫,同样需要智能的适应不同的网站;


扯淡了半天,这个爬虫到底怎么弄啊?


cos这里介绍一个Python HTTP库: requests。Requests是一个基于Apache2协议开源的Python HTTP库,号称是“为人类准备的HTTP库”。

Python中,系统自带的urllib和urllib2都提供了功能强大的HTTP支持,但是API接口确实太难用了。requests作为更高一层的封装,确实在大部分情况下对得起它的sloganHTTP for Humans。


发送请求:


先看看requests的简单使用吧:


In [1]: import requests

In [2]: resp = requests.get('http://wcbin.me')

In [3]: resp.status_code

Out[3]: 200


发送一个完整的HTTP请求,只需要一句代码即可。发送其它方式的请求同样如此简洁:


In [1]: r = requests.post("http://wcbin.me/login", data = {"user":"wcbin", "pass": "mypassword"})

In [2]: r = requests.put("http://wcbin.me/post", data = {"title":"article"})

In [3]: r = requests.delete("http://wcbin.me/foo")

In [4]: r = requests.head("http://wcbin.me/bar")

In [5]: r = requests.options("http://wcbin.me/abc")


解析URL中的参数:


在GET请求的时候,经常会有很多查询参数接在URL后面,形如http://wcbin.me/query?name=wcbin

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部