初识爬虫


初识爬虫


爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。

    **爬虫能做很多事,能做商业分析,也能做生活助手。这是个人利用爬虫所做到的事情,而公司,同样可以利用爬虫来实现巨大的商业价值。比如你所熟悉的搜索引擎——百度和谷歌,它们的核心技术之一也是爬虫,而且是超级爬虫。
    一般来说,传统的收集数据的做法是:通过浏览器上网,手动下载所需要的数据。其实在这背后,浏览器做了很多我们看不见的工作,而只有了解浏览器的工作原理后,才能真正理解爬虫在帮我们做什么。**

浏览器的工作原理:
首先在浏览器输入网址(也可以叫URL)。然后,浏览器向服务器传达了我们想访问某个网页的诉求,这个过程就叫做“请求”,紧接着,服务器把你想要的网站数据发送给浏览器,这个过程叫做“响应”。所以,浏览器和服务器之间,有着“先请求,后响应”的关系。
当服务器把数据响应给浏览器之后,浏览器并不会直接把数据丢给你。因为这些数据是用计算机的语言写的,浏览器还要把这些数据翻译成你能看得懂的样子,这是浏览器做的另一项工作“解析数据”。紧接着,我们就可以在拿到的数据中,挑选出对我们有用的数据,这是“提取数据”。最后,我们把这些有用的数据保存好,这是“存储数据”。

爬虫工作原理:

    For example.当你决定去某个网页后,首先,爬虫可以模拟浏览器去向服务器发出请求;其次,等服务器响应后,爬虫程序还可以代替浏览器帮我们解析数据;接着,爬虫可以根据我们设定的规则批量提取相关数据,而不需要我们去手动提取;最后,爬虫可以批量地把数据存储到本地。其实,还可以把最开始的【请求——响应】封装为一个步骤——获取数据。由此,我们得出,爬虫的工作分为四步:
    ***获取数据***:爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。
	***解析数据***: 爬虫程序会把服务器返回的数据解析成我们能读懂的格式。
	***提取数据***: 爬虫程序再从中提取出我们需要的数据。
	***储存数据***:爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。

首先,体验爬虫,利用第一步,即,获取数据。
我们将利用一个强大的库——requests来获取数据。
首先来看requests.get()方法

requests.get()

import requests
#引入requests库
res = requests.get('URL')
#requests.get是在调用requests库中的get()方法,它向服务器发送了一个请求,括号里的参数是你需要的数据所在的网址,然后服务器对请求作出了响应。
#我们把这个响应返回的结果赋值在变量res上。

第1行代码,是引用requests库。

第3行代码,requests.get()发送了请求,然后得到了服务器的响应。服务器返回的结果是个Response对象,现在存储到了我们定义的变量res中。
Python是一门面向对象编程的语言,而在爬虫中,理解数据是什么对象是非常、特别、以及极其重要的一件事。因为只有知道了数据是什么对象,我们才知道对象有什么属性和方法可供我们操作。
这代表着:res是一个对象,属于requests.models.Response类。好,既然已经知道res是一个Response对象了,我们也就可以去了解它的相应属性和方法了。

Response对象常用属性:

属性:response.status_code(检查请求是否成功);response.content(把response对象转换为二进制数据);response.text(把response对象转换为字符串数据);response.encoding(定义response对象的编码)。

首先是response.status_code

import requests 
res = requests.get('URL') 
print(res.status_code)

第3行代码是在打印res的响应状态码,它可以用来检查我们的requests请求是否得到了成功的响应。我们看到终端结果显示了xxx(例如200),这个数字代表服务器同意了请求,并返回了数据给我们。我们还可能收到其他的状态码。下面有一些数据,供你参考不同的状态码代表什么,但不需要记住它们,在遇到问题的时候查询就好。
1xx(请求收到);
2xx(请求成功);
3xx(重定向);
4xx(客户端错误);
5xx(服务器端错误);

接着的属性是response.content

# 引入requests库
import requests

# 发出请求,并把返回的结果放在变量res中
res = requests.get('URL')
# 把Reponse对象的内容以二进制数据的形式返回
pic = res.content
# 可以新建一个文件ppt.jpg
 
# 图片内容需要以二进制wb读写。。
photo = open('ppt.jpg','wb')
# 获取pic的二进制内容
photo.write(pic) 
# 关闭文件
photo.close()

下面是属性response.text下载文本

import requests
#引用requests库
res = requests.get('URL')
我们得到一个对象,它被命名为res
novel=res.text
#把Response对象的内容以字符串的形式返回
print(novel[:800])
#现在,可以打印文本了,输出800字看看
最后一个属性:response.encoding
import requests
#引用requests库
res = requests.get('URL')
#得到一个对象,它被命名为res
res.encoding='gbk'
#定义Response对象的编码为gbk
novel=res.text
#把Response对象的内容以字符串的形式返回
print(novel[:800])
#打印前800个字

爬虫伦理:
服务器其实就是一个超级电脑,拥有这个服务器的公司,对爬虫其实也有明确的态度。通常情况下,服务器不太会在意小爬虫,但是,服务器会拒绝频率很高的大型爬虫和恶意爬虫,因为这会给服务器带来极大的压力或伤害。不过,服务器在通常情况下,对搜索引擎是欢迎的态度(刚刚讲过,谷歌和百度的核心技术之一就是爬虫)。当然,这是有条件的,而这些条件会写在Robots协议。Robots协议是互联网爬虫的一项公认的道德规范,它的全称是“网络爬虫排除标准”(Robots exclusion protocol),这个协议用来告诉爬虫,哪些页面是可以抓取的,哪些不可以。如何查看网站的robots协议呢,很简单,在网站的域名后加上/robots.txt就可以了。
下面是一部分淘宝的robots协议 ( http://www.taobao.com/robots.txt)。在截取的部分,可以看到淘宝对百度和谷歌这两个爬虫的访问规定,以及对其它爬虫的规定。
Disallow: / #禁止访问除 Allow 规定页面之外的其他所有页面

User-Agent: Googlebot #谷歌爬虫 Allow: /article Allow: /oshtml Allow:
/product #允许访问/product/ Allow: /spu Allow: /dianpu Allow: /oversea
Allow: /list Allow: /ershou Allow: /$ Disallow: / #禁止访问除 Allow
规定页面之外的其他所有页面 User-Agent: * #其他爬虫 Disallow: / #禁止访问所有页面

协议里最常出现的英文是Allow和Disallow,Allow代表可以被访问,Disallow代表禁止被访问。而且有趣的是,淘宝限制了百度对产品页面的爬虫,却允许谷歌访问。
所以,当你在百度搜索“淘宝网”时,会看到下面这两行小字。
“由于该网站的robots.txt文件存在限制指令(限制搜索引擎抓取),系统无法提供该页面的内容描述-了解详情“
因为百度很好地遵守了淘宝网的robots.txt协议,自然,你在百度中也查不到淘宝网的具体商品信息了。
虽然Robots协议只是一个道德规范,和爬虫相关的法律也还在建立和完善之中,但我们在爬取网络中的信息时,也应该有意识地去遵守这个协议。
恶意消耗别人的服务器资源,是一件不道德的事,恶意爬取一些不被允许的数据,还可能会引起严重的法律后果。工具在你手中,如何利用它是你的选择。当你在爬取网站数据的时候,别忘了先看看网站的Robots协议是否允许你去爬取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Augenstern果果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值