03 爬虫请求模块

2020年04月30日 169点热度 0人点赞 0条评论

1.1 学习urllib.requests模块

Requests的底层原理是urllib,不管在Python2/Python3,都是通用,方法一样。

Requests简单易用,而在早期的Python2的urllib相对来说比较麻烦,但是老师说就算不会用,也要看懂urllib,因为很多遗留下来的项目很多都是使用urllib底层原理实现的Requests。

Python 2 版本:urllib2、urllib

Python 3 版本:把urllib和urllib2合并,urlib.requests

Requests库的作用:发送网络请求,返回响应的数据

1.2 常用方法

  • urllib.request.urlopen("网址") 作用:向网站发送请求获取响应对象

  • 字节流 = response.read()

  • 字符串 = response.read().decodec("utf-8")

  • urllib.request.Request("网址", headers="字典") 备注:urlopen() 不支持User-Agent

1.3 响应对象

  • read() 读取服务器响应的内容
  • getcode() 返回HTTP的响应码
  • geturl() 返回实际数据的URL(防止重定向问题)

2. urllib.parse 模块

  • urlencode(字典) # 把字符串返回十六进制的内容

    import urllib.parse
    
    name = {'wd':'海贼王'}
    
    name = urllib.parse.urlencode(name)   # 需要使用字典,返回十六进制码
    
    print(name)   # wd=%E6%B5%B7%E8%B4%BC%E7%8E%8B
  • quote(字符串)

    import urllib.parse
    
    name = '海贼王'
    
    name = urllib.parse.quote(name)   # 直接传入字符串,返回十六进制码
    
    print(name) # %E6%B5%B7%E8%B4%BC%E7%8E%8B

3. 请求方式

  • GET:在查询的URL地址上会显示参数

  • POST:在Requests的方法中增加Data的参数

    urllib.request.Request(url,data=data ,headers=headers)

    data:表单数据以byetes类型提交,不是str

4. Requests模块

4.1 Requests 模块的安装方法
>>> pip install requests

或则直接在开发工具(Terminal)/ 设置中安装,Pycharm对Python开发者来说比较友好。

4.2 Requests 的常用方法(GET/POST)
import requests # 使用Requests模块必须要导入第三方库
requests.get(url, headers=headers)
requests.post(url, headers=headers)
4.3 Requests 响应对象方法
response.text   # 返回字符串(str)
response.content    # 返回字节流Bytes(二进制)
response.content.decode('utf-8')    # 手动进行解吗
response.url    # 返回URL
response.encode('utf-8')    # 进行encode编码
4.4 Requests 设置代理

使用Requests代理只需要在请求方法中(GET/POST)增加Proxies参数

proxy = {
    'http':'192.222.x.x:9999'
}
requests.get(url, proxies=proxy)    # 增加Proxies参数

免费代理IP:https://free-proxy-list.net/

⻄刺免费代理IP:http://www.xicidaili.com/

4.5 Cookies

Cookies 把数据存放在客户端上,通过客户端记录确认用户身份。

Cookies 可以比避免http请求的过程中断(需要重新建立起连接才能访问)因此为了维护他们与服务器之间的连接,在用户客户端上保存信息。

Cookies 本身并不是很安全,因为别人可以分析查看本地的Cookies信息进行服务器欺骗。如曾经登入过的页面。

但是为了获取登入页面之后的信息,我们必须发送带有Cookies的请求(放在请求头User-Agent里)

4.6 Sessions

Sessions 把数据存放在服务器上,通过服务器记录确认用户的身份。

Sessions 一般上保存在服务器的数据不太长时间,因为当访问增多的时候,会比较占用服务器的资源。

ression = requests.session()
response = requests.get(url, headers=headers)
4.7 处理不受信任的SSL证书

什么是SSL证书?

  • SSL证书是配置在服务器上的,如带有HTTPS协议的标签都是受信任证书颁发机构CA,在经过验证服务器后颁发,具有服务器验证和数据加密传输的功能。

请求非SSL验证的方法:

response = requests.get(url, verify=False)  # verify=False

YenYoong☕

当你能梦的时候就不要放弃梦~😎

文章评论