网络爬虫2-python学习32

用爬虫获取数据

学习利用一个强大的库——requests来获取数据;

电脑上安装requests方法是:在Mac电脑里打开终端软件(terminal),输入pip3 install requests,然后点击enter即可;Windows电脑里叫命令提示符(cmd),输入pip install requests 即可。

requests库可以帮我们下载网页源代码、文本、图片,甚至是音频。其实,“下载”本质上是向服务器发送请求并得到响应。

requests.get()方法具体用法:

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

第3行代码,requests.get()发送了请求,然后得到了服务器的响应。服务器返回的结果是个Response对象,现在存储到了我们定义的变量res中。

我们试着用requests.get()来下载一个小说——《三国演义》:

小说的URL(网址)是:https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md

三国下载

Response对象的常用属性:

Python是一门面向对象编程的语言,而在爬虫中,理解数据是什么对象是非常、特别、以及极其重要的一件事。因为只有知道了数据是什么对象,我们才知道对象有什么属性和方法可供我们操作。

通过print(type(res))发现:res是一个对象,属于requests.models.Response类。既然已经知道res是一个Response对象了,我们也就可以去了解它的相应属性和方法了。

Response对象常用的四个属性:

1、response.status_code:

res的响应状态码解释:

响应状态码

response.status_code是一个很常用的属性,在爬虫代码中将多次出现。

2、response.content:它能把Response对象的内容以二进制数据的形式返回,适用于图片、音频、视频的下载。

假如我们想下载这张图片,它的URL是:https://res.pandateacher.com/2018-12-18-10-43-07.png

程序举例如下:

# 引入requests库

import requests

# 发出请求,并把返回的结果放在变量res中

res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png')

# 把Reponse对象的内容以二进制数据的形式返回

pic = res.content

# 新建了一个文件ppt.jpg,这里的文件没加路径,它会被保存在程序运行的当前目录下。

# 图片内容需要以二进制wb读写。你在学习open()函数时接触过它。

photo = open('ppt.jpg','wb')

# 获取pic的二进制内容

photo.write(pic)

# 关闭文件

photo.close()


3、response.text:这个属性可以把Response对象的内容以字符串的形式返回,适用于文字、网页源代码的下载。

代码举例如下:

import requests

#引用requests库

res=requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md')

#下载《三国演义》第一回,我们得到一个对象,它被命名为

resnovel=res.text

#把Response对象的内容以字符串的形式返回

print(novel[:800])

#现在,可以打印小说了,但考虑到整章太长,只输出800字看看就好。在关于列表的知识那里,你学过[:800]的用法。

4、response.encoding:它能帮我们定义Response对象的编码。

代码示例:

import requests

#引用requests库

res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md')

#下载《三国演义》第一回,我们得到一个对象,它被命名为res

res.encoding='utf-8'

#定义Reponse对象的编码为utf-8。

novel=res.text

#把Response对象的内容以字符串的形式返回

print(novel[:800])

#打印小说的前800个字。

我们该在什么时候用res.encoding呢?

首先,目标数据本身是什么编码是未知的。用requests.get()发送请求后,我们会取得一个Response对象,其中,requests库会对数据的编码类型做出自己的判断。但是!这个判断有可能准确,也可能不准确。

如果它判断准确的话,我们打印出来的response.text的内容就是正常的、没有乱码的,那就用不到res.encoding;如果判断不准确,就会出现一堆乱码,那我们就可以去查看目标数据的编码,然后再用res.encoding把编码定义成和目标数据一致的类型即可。

总的来说,遇上文本的乱码问题,才考虑用res.encoding。

总结:

总结

爬虫伦理:爬虫的道德标准

Robots协议是互联网爬虫的一项公认的道德规范,它的全称是“网络爬虫排除标准”(Robots exclusion protocol),这个协议用来告诉爬虫,哪些页面是可以抓取的,哪些不可以。

如何查看网站的robots协议呢,很简单,在网站的域名后加上/robots.txt就可以了。

协议里最常出现的英文是Allow和Disallow,Allow代表可以被访问,Disallow代表禁止被访问。而且有趣的是,淘宝限制了百度对产品页面的爬虫,却允许谷歌访问。

虽然Robots协议只是一个道德规范,和爬虫相关的法律也还在建立和完善之中,但我们在爬取网络中的信息时,也应该有意识地去遵守这个协议。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容

  • 一、认识爬虫 1. 什么是网络爬虫? 百度词条解释:网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经...
    YH学编程阅读 627评论 0 0
  • github地址,欢迎大家提交更新。 express() express()用来创建一个Express的程序。ex...
    Programmer客栈阅读 2,525评论 0 1
  • Address:https://www.zybuluo.com/XiangZhou/note/208532 Exp...
    天蠍蒗漫阅读 11,318评论 2 55
  • 有了一丝笃定,生而为人不容易,好的坏的都是体验,坚定缓慢的走寻求真理真相的路,不惧将来,不畏过往 幻,如果都是幻,...
    玖蛙阅读 84评论 0 0
  • 公元2017年11月13日上午,舍友小葛在群里激动地喊“来暖气啦太幸福太幸福”,我立马摸了下宿舍的暖气片,拔凉拔凉...
    野都L阅读 272评论 0 0