第3次作业-MOOC学习笔记:Python网络爬虫与信息提取

 

1.注册中国大学MOOC

 

2.选择北京理工大学嵩天老师的《Python网络爬虫与信息提取》MOOC课程

第3次作业-MOOC学习笔记:Python网络爬虫与信息提取_第1张图片

 

3.学习完成第0周至第4周的课程内容,并完成各周作业

第3次作业-MOOC学习笔记:Python网络爬虫与信息提取_第2张图片

 

4.提供图片或网站显示的学习进度,证明学习的过程。

第3次作业-MOOC学习笔记:Python网络爬虫与信息提取_第3张图片

5.写一篇不少于1000字的学习笔记,谈一下学习的体会和收获。

 

  通过学习了《Python网络爬虫与信息提取》,明白了r.raise_for_status() : 如果不是200,产生异常requests.HTTPError,在方法内部判断r.status_code是否等于200,不需要增加额外的if语句,该语句便于利用try-except进行异常处理,通用代码框架,可以使用户爬取网页变得更有效,更稳定、可靠。理解了PATCHPUT的区别在于PATCH仅向URL提交UserName的局部更新请求,而采用PUT必须将所有20个字段一并提交到URL,未提交字段被删除。

      Requests库的7个主要方法:

requests.request()

构造一个请求,支撑以下各方法的基础方法

requests.get()

获取HTML网页的主要方法,对应于HTTP的GET

requests.head()

获取HTML网页头信息的方法,对应于HTTP的HEAD

requests.post()

向HTML网页提交POST请求的方法,对应于HTTP的POST

requests.put()

向HTML网页提交PUT请求的方法,对应于HTTP的PUT

requests.patch()

向HTML网页提交局部修改请求,对应于HTTP的PATCH

requests.delete()

向HTML页面提交删除请求,对应于HTTP的DELET

      Requests库的异常:

异常

说明

requests.ConnectionError

网络连接错误异常,如DNS查询失败拒绝连接等

requests.HTTPError

HTTP错误异常

requests.URLRequired

URL缺失异常

requests.ToolManyRedirects

超过最大重定向次数,产生重定向异常

requests.ConnectTimeout

连接远程服务器超时异常

requests.Timeout

请求URL超时,尝试超时异常

  网络爬虫容易引发的问题有几个方面:性能骚扰方面,受限于编写水平和目的,网络爬虫将会为web服务器带来巨大的资源开销;法律风险方面,服务器上的数据有产权归属,网路爬虫获取数据后牟利将带来法律风险;隐私泄露方面,网络爬虫可能具备突破简单访问控制的能力,获得被保护数据从而泄露个人隐私。

  数据流的三个路径

路径1

1EngineSpider处获得爬取请求( Request)

2Engine将爬取请求转发给 Scheduler,用于调度;

路径2

3EngineScheduler处获得下一个要爬取的请求;

4Engine将爬取请求通过中间件发送给 Downloader

5)爬取网页后, Downloader形成响应( Response),通过中间件发给 Engine

6Engine将收到的响应通过中间件发送给 Spider处理;

路径3

7Spider处理响应后产生爬取项(scraped Item)和新的爬取请求( Requests)Engine

8Engine将爬取项发送给Item Pipeline(框架出口)

9Engine将爬取请求发送给Scheduler

  数据流的出入口

Engine控制各模块数据流,不间断从 Scheduler处获得爬取请求,直至请求为空。

框架入口: Spider的初始爬取请求

框架出口: Item Pipeline

ENGINESCHEDULERDOWNLOAD模块功能已有实现,SPIDERSITEM PIPELINES模块有用户编写(配置)。

Requests函数包括十三个访问控制参数

requests.request(method,url,**kwargs)

**kwargs: 控制访问的参数,均为可选项

(1)params: 字典或字节序列,作为参数增加到url

 

kv={'key1':'value1','key2':'value2'}
r=requests.request('GET','http://python123.io/ws',params=kv)
print(r,url)

 

(2)data: 字典、字节序列或文件对象,作为Request的内容

 

kv=('key1':'value1','key2':'value2')
r=requests.request('POST','http://python123.io/ws',data=kv)
body='主体内容'
r=requests.request('POST','http://python123.io/ws',data=body)

 

(3)json: JSON格式的数据,作为Request的内容

 

kv={'key1':'value1'}
r=requests.request('POST','http://python123.io/ws',json=kv)

 

(4)headers: 字典,HTTP定制头

hd={'user-agent';'Chrome/10'}
r=requests.request('POST','http://python123.io/ws',headers=hd)

(5)cookies(是request库的高级功能): 字典或Cookie.Jar , Request中的cookie

(6)auth(是request库的高级功能): 元组, 支持HTTP认证功能

(7)files: 字典类型,传输文件

 

fs={'file': open('data.xls','rb')}
r=requests.request('POST','http://python123.io/ws',files=fs)

 

⑧timeout: 设定超时时间,秒为单位

r=requests.request('GET','http://www.baidu.com',timeout=10)

 

⑨proxies: 字典类型,设定访问代理服务器,可以增加登录认证

⑩allow_redirects: True/False,默认为True,重定向开关

⑪stream: True/False,默认为True,获取内容立即下载开关

⑫verify: True/False,默认为True,认证SSL证书开关

⑬cert: 本地SSL证书路径

 

 

你可能感兴趣的:(第3次作业-MOOC学习笔记:Python网络爬虫与信息提取)