栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

3 爬虫学习之requests模块

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

3 爬虫学习之requests模块

一、重要知识掌握

        1、掌握headers参数的使用

        2、掌握发送带参数的请求

        3、掌握headers中携带cookie

        4、掌握cookieJar的转换方法

        5、掌握超时参数timeout的使用

        #6、掌握代理ip参数proxies的使用

        #7、使用verify参数忽略CA证书

        #8、掌握requests模块发送post请求

        #9、掌握利用requests.session进行状态保持

二、requests模块介绍

        官方文档:Requests: 让 HTTP 服务人类 — Requests 2.18.1 文档 (python-requests.org)

        精读:“快速上手”部分

        1、requests模块的作用

        发送http请求,获取响应数据

        2、requests模块安装

        pip/pip3 intall   requests   

        3、requests模块发送get请求

        需求:通过requests向百度首页发送请求,获取该页面源码

        代码实现:

import requests
url="http://www.baidu.com"
response=requests.get(url)
print(response.text)  #打印源码str类型
三、response响应对象

        解决中文乱码问题:response.content.decode()

        response.text是requests模块按照chardet模块推测出的编码字符集进行解码的结果。

        我们可以在网页源码中搜索charset,尝试参考编码字符集,注意存在不准确的情况。

        1、reponse.text和response.content的区别

        response.text:

        类型:str

        解码类型:requests模块自动根据HTTP头部对响应的编码做出有根据的推测,推测的文本编码

        response.content:

        类型:bytes

        解码类型:没有指定

        2、 通过对response.content进行decode,来解决中文乱码

        response.content.decode()  默认utf-8

         response.content.decode("GBK")

        常见的编码字符集:

        utf-8

        gbk

        gb2312

        ascii

        iso-8859-1

        3、response响应对象的其他常用属性或方法

        response.url  响应的url;有时候响应的url和请求的url并不一致

        response.status_code  响应状态码

        response.requests.headers  响应的请求头

        response.headers  响应头

        response.request._coookie  响应对应请求的cookie;返回cookieJar类型

        response.cookie  响应的cookie(经过了set-cookie动作;返回cookieJar类型)

        response.json()  自动将json字符串类型的响应内容转换为python对象(dict or list)

四、requests模块发送请求         1.1、发送带headers的请求
import requests
url='http://www.baidu.com'
response=requests.get(url)
print(response.content.decode())
print(response.request.headers) #打印响应对应请求的请求头信息

        浏览器上百度首页的网页源码VS代码中的百度首页的源码

        查看网页源码方法:右键-检查

        代码中百度首页源码非常少:

        措施:在发送请求的时候,要发送一些请求头用于模拟浏览器(欺骗服务器,获取和浏览器一样的信息)。

        1.2、携带请求头发送请求的方法:

        requests.get(url,headers=headers)

        字典形式:请求头字段名为key,字段对应的值为value.

        1.3、代码实现:
import requests
url='https://www.baidu.com'
headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38'
    }
response=requests.get(url,headers=headers)
print(response.content)
        2.1、发送带参数的请求

                使用百度搜索时,url地址中会有一个“?”,“?”后面就是请求参数,又叫做查询字符串。

        2.1.1 在url携带参数

        搜索python:

        https://www.baidu.com/s?tn=15007414_9_dg&wd=python

        https://www.baidu.com/s?wd=python

        直接对含有参数的url发起请求:

import requests
url='https://www.baidu.com/s?wd=python'
headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38'
    }
response=requests.get(url,headers=headers)

        2.1.2 通过params携带参数字典

import requests
url='https://www.baidu.com/s?'
headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38'
    }
kw = {'wd': 'python'}
response=requests.get(url,headers=headers,params=kw)
print(response.content)
        3.1、在headers中携带cookie

        cookie字段来作用户访问状态的保持。

        3.2、cookies参数的使用

        3.2.1 cookies参数的形式:字典

        cookies={“cookies的name":"cookies的value"}

        3.2.2 cookies参数的使用方法

        response=requests.get(url,cookies)

        3.2.3 用cookies字符串转换为cookies参数所需的字典

        cookies_dict{(cookies.split('-')[0]:cookies.split('-')[-1] for cookie in  cookies_str.split(';')}

        3.2.4 注意:cookie一般有过期时间,一旦过期需要重新获取。

        3.3、cookieJar对象转换为cookies字典的方法

        使用requests获取的response对象,具有cookies属性,该属性值是cookieJar类型,包含了对方服务器设置在本地的cookies,如何转换为cookies字典?

        3.3.1 转换方法:

        cookies_dict = requests.utils.dict_from_cookiejar(response.cookies)

        3.3.2 说明:

        response.cookies返回的就是cookieJar类型的对象

         requests.utils.dict_from_cookiejar 函数返回cookies字典

import requests
url = 'https://www.baidu.com'
response=requests.get(url)
print(response.cookies)
cookies_dict = requests.utils.dict_from_cookiejar(response.cookies)
print(cookies_dict)
        4、超时参数timeout的使用

        超时参数timeout的使用方法:

        response=requests.get(url,timeout=3)

        timeout=3表示:发送请求后,3秒内返回响应,否则就抛出异常

        未完待续....

        

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/329959.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号