python爬虫入门之urllib库详解(二)

爬虫入门之urllib库详解(二)

1 urllib模块

urllib模块是一个运用于URL的包

urllib.request用于访问和读取URLS

urllib.error包括了所有urllib.request导致的异常

urllib.parse用于解析URLS

urllib.robotparser用于解析robots.txt文件(网络蜘蛛)

2 urllib读取网页的三种方式

urlopen直接打开

urlopen返回对象提供的方法

read() , readline() ,readlines() , fileno() , close() :对HTTPResponse类型数据进行操作

info():  返回HTTPMessage对象,表示远程服务器返回的头信息

getcode():返回Http状态码。如果是http请求,200请求成功完成;404网址未找到

geturl(): 返回请求的url

13406307-6fe2f3eeeb2d1c38.png

采用User-Agent (用户代理,简称UA)

UA用来包装头部的数据:

-User-Agent :这个头部可以携带如下几条信息:浏览器名和版本号、操作系统名和版本号、默认语言

-Referer:可以用来防止盗链,有一些网站图片显示来源http://***.com,就是检查Referer来鉴定的

-Connection:表示连接状态,记录Session的状态

13406307-108f5c28892b28b6.png

#常用的消息包头- Accept:text/html,image/* (告诉服务器,浏览器可以接受文本,网页图片)

- Accept-Charaset:ISO-8859-1  [接受字符编码:iso-8859-1]

- Accept-Encoding:gzip,compress  [可以接受 gzip,compress压缩后数据]

- Accept-Language:zh-cn    [浏览器支持的语言] 

- Host:localhost:8080      [浏览器要找的主机]

- Referer:http://localhost:8080/test/abc.html  [告诉服务器我来自哪里,常用于防止下载,盗链]

- User-Agent:Mozilla/4.0(Com...)              [告诉服务器我的浏览器内核]

- Cookie:    [会话]

- Connection:close/Keep-Alive  [保持链接,发完数据后,我不关闭链接]

- Date:        [浏览器发送数据的请求时间]

定制header信息

在 HTTP Request 中加入特定的 Header,来构造一个完整的HTTP请求消息。

可以通过调用Request.add_header() 添加/修改一个特定的header 也可以通过调用Request.get_header()来查看已有的header。

13406307-d8a1fa968715c872.png

我们都知道Http协议中参数的传输是"key=value"这种简直对形式的,如果要传多个参数就需要用“&”符号对键值对进行分割。如"?name1=value1&name2=value2",这样在服务端在收到这种字符串的时候,会用“&”分割出每一个参数,然后再用“=”来分割出参数值。

3 urllib访问之get与post

1 get方式: 通过将url + ”?” + data 拼接起来赋值给新的url

四步走:

1字典数据编码key=value构建url,headers 

2构建请求(url , headers) 

3打开请求返回响应 

4读取响应

13406307-0cd9577ee80f57d2.png

2 post方式: 定义字典类型value,保存username和password,通过urlencode对字典编码转二进制返回给data,将数据和url通过Request方法来申请访问

五步走:

1构建headers,url 

2字典转二进制data 

3构建请求(url , headers,data) 

4打开请求返回响应 

5读取响应

13406307-119e1233768507d4.png

3 post请求并将数据存入数据库

13406307-8ba64917ccbca588.png

4 json编码解析

当请求响应结果为json数据时,出现了二进制编码转不了情况,可以设置为非ascii编码

13406307-e91f35619b113f5b.png

4 处理HTTPS请求 SSL证书验证

现在随处可见 https 开头的网站,urllib2可以为 HTTPS 请求验证SSL证书,就像web浏览器一样,如果网站的SSL证书是经过CA认证的,则能够正常访问,如:https://www.baidu.com/等...

如果SSL证书验证不通过,或者操作系统不信任服务器的安全证书,比如浏览器在访问12306网站如:https://www.12306.cn/mormhweb/的时候,会警告用户证书不受信任。(据说 12306 网站证书是自己做的,没有通过CA认证)

13406307-6393113047ef443e.png

5 封装

常见功能可以进行简单的封装

13406307-705b87e56df9c48e.png

转载于:https://www.jianshu.com/p/6b74c8113221

猜你喜欢

转载自blog.csdn.net/weixin_33963594/article/details/91073201