手机访问:wap.265xx.com第1课 认识爬虫
1. 什么是网络爬虫?
百度词条解释:网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
通俗地讲,就是利用程序在网上拿到对我们有价值的数据。
2. 爬虫可以做什么呢?
爬虫能做很多事,能做商业分析,也能做生活助手,这是个人利用爬虫所做到的事情。而公司,同样可以利用爬虫来实现巨大的商业价值。比如你所熟悉的搜索引擎——百度和谷歌,它们的核心技术之一也是爬虫,而且是超级爬虫。
3. 爬虫的工作原理是什么?
4. 爬虫的四个步骤:
1. 获取数据:我们将会利用一个强大的库——requests来获取数据。
2. 在电脑上安装requests库的方法:
在Mac电脑里打开终端软件(terminal),输入pip3 install requests,然后点击enter即可。
在Windows电脑里叫命令提示符(cmd),输入pip install requests 即可。
打开这个网址, http://www.lfd.uci.edu/~gohlke/pythonlibs 在这个网站上面有很多 python 的第三方库文件,我们按 ctrl+f 搜索很容易找到 requests 。(怎么安装第三方库?)
3. Request.get()方法:
>>>import requests
#引入requests库
>>>res = requests.get('URL')
#requests.get是在调用requests库中的get()方法,它向服务器发送了一个请求,括号里的参数是你需要的数据所在的网址,然后服务器对请求作出了响应。
#我们把这个响应返回的结果赋值在变量res上。
4. Response对象的常用属性
1)打印变量res的数据类型
>>>import requests
>>>res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png')
>>>print(type(res))
#结果为res是一个对象,属于requests.models.Response类
2) Response对象常用的四个属性:
3) Response.status_code 属性
返回服务器是否同意请求或响应的结果
>>>import requests
>>>res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png')
>>>print(res.status_code) #打印变量res的响应状态码,以检查请求是否成功
我们看到终端结果显示了200,这个数字代表服务器同意了请求,并返回了数据给我们。
4)下面有一个表格,供你参考不同的状态码代表什么:
5)response.content属性
它能把Response对象的内容以二进制数据的形式返回,适用于图片、音频、视频的下载。
>>>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() # 关闭文件
6) response.text属性
它可以把Response对象的内容以字符串的形式返回,适用于文字、网页源代码的下载。
import requests #引用requests库
res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md') #下载《三国演义》第一回,我们得到一个对象,它被命名为res
novel=res.text #把Response对象的内容以字符串的形式返回
print(novel[:800]) #,只输出800字
7)response.encoding属性
它能帮我们定义Response对象的编码。
目标数据本身有它的编码类型,用requests.get()发送请求后,我们得到一个Response对象,其中requests模块会对数据的编码类型做出自己的判断。
但是,如果加入了代码 :
>>>res.encoding='gbk'
不管原来的判断是什么,直接定义了Response对象的编码类型是'gbk'。
这样一来,如果跟数据本身的编码是'utf-8',就不一致了,打印出来就是一堆乱码。
遇上文本的乱码问题,就考虑用res.encoding。
# 引入requests库
import requests
#下载《三国演义》第一回,我们得到一个对象,它被命名为res
res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md')
# 把Response对象的内容以字符串的形式返回
novel = res.text
# 创建一个名为《三国演义》的txt文档,指针放在文件末尾,追加内容
k = open('《三国演义》.txt','a+')
# 写进文件中
k.write(novel)
# 关闭文档
k.close()
1.? 有哪些反爬虫策略呢?
网络爬虫在运行过程中也会遇到反爬虫策略,常见的有:
?访问频率限制
?Header头部信息校验
?采用动态页面生成
?访问地址限制
?登录限制
?验证码限制
这些只是传统的反爬虫手段,随着AI时代的到来,也会有更先进的手段的到来。
2. Robots协议
Robots协议是互联网爬虫的一项公认的道德规范,它的全称是“网络爬虫排除标准”(Robots exclusion protocol),这个协议用来告诉爬虫,哪些页面是可以抓取的,哪些不可以。
如何查看网站的robots协议呢,很简单,在网站的域名后加上/robots.txt就可以了。
所以,当你在百度搜索“淘宝网”时,会看到下图的这两行小字。
1)什么是网络爬虫?
2)网络爬虫的工作原理?
3)网络爬虫的四个步骤是什么?
4)response对象的四个属性分别有什么作用?
5)从网上爬取一段文字(或图片)的代码?
上一篇:了不起的麦瑟尔夫人第一季
下一篇:读在最美人间 | 译林社4月新书,抢先看!
最近更新科技资讯
- 22年过去了,《透明人》依然是尺度最大的科幻电影,没有之一
- 人类基因编辑技术及其伦理问题
- 不吹不黑,五阿哥版的《嫌疑人》能过及格线
- 论Lacan心理公众号的“双标”特质
- 猎罪图鉴:犯罪实录 女性伦理
- 清入关的第一位皇帝是谁,清朝入关后有几位皇帝?
- 描写露台的优美句子
- 谭德晶:论迎春悲剧的叙事艺术
- 中秋节的好词好句
- 《三夫》:一女侍三夫,尺度最大的华语片要来了
- 赛博朋克的未来,在这里
- 文件1091/721/2A:反概念武器实体的一封信件
- 尤战生:哥伦比亚大学点点滴滴
- 韩国最具独特魅力的男演员(安在旭主演的电视剧有哪些)
- 乃至造句
- 请保护好我们的医生,他们太难了
- GCLL06-土木工程的伦理问题-以湖南凤凰县沱江大桥大坍塌事故为例
- 黄金宝典:九年级道德与法治核心考点必背篇
- 【我心中的孔子】伟大的孔子 思想的泰山
- CAMKII-δ9拮抗剂及其用途
- 选粹 | 郑玉双:法教义学如何应对科技挑战?——以自动驾驶汽车为例
- 苍井空37岁宛若少女,携子送祝福遭热讽,下架所有视频母爱无私
- 日韩新加坡怎么对待影视剧中的裸露镜头
- 中西方文化中的颜色词
- 土豪家的美女摸乳师——关于电影《美人邦》



