Python实现urllib3和requests库使用 | python爬虫实战之五

简介: 本节介绍了urllib3库和requests库中的一些方法的使用。

python爬虫AJAX数据爬取和HTTPS访问 | python爬虫实战之四

urllib3库

https://urllib3.readthedocs.io/en/latest/
标准库urllib缺少了一些关键的功能, 非标准库的第三方库urllib3提供了, 比如说连接池管理。

安装

$ pip install urllib3

之后,我们来借用之前的json数据来看一下:

import urllib3
from urllib.parse import urlencode
from urllib3.response import HTTPResponse

jurl = 'https://movie.douban.com/j/search_subjects'

d = {
    'type':'movie',
    'tag':'热门',
    'page_limit':10,
    'page_start':10
}

with urllib3.PoolManager as http:
  #  http.urlopen()
     response = http.request('GET', '{}?{}'.format(jurl, urlencode(d)), headers={
    'User-agent': "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36"
    })
    print(type(response))
    # response:HTTPResponse = HTTPResponse()
    print(response.status)
    print(response.data)

执行结果:

image.png

image.png

这个封装的属性和方法还是比较原始的,我们对于这样的使用肯定是不行的,那我们需要用什么呢?接着来讲requests库。

requests库

requests使用了urllib3, 但是API更加友好, 推荐使用。
需要先安装,跟之前一样。
安装:

$ pip install requests

我们对上面的例子做出修改:

import urllib3
from urllib.parse import urlencode
from urllib3.response import HTTPResponse

import requests

jurl = 'https://movie.douban.com/j/search_subjects'

d = {
    'type':'movie',
    'tag':'热门',
    'page_limit':10,
    'page_start':10
}


url = '{}?{}'.format(jurl, urlencode(d))

response = requests.request('GET', url, headers = {
    'User-agent': "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36"
})


with response:
    print(response.text)
    print(response.status_code)
    print(response.url)
    print(response.headers)
    print(response.request)

执行结果:

image.png

我们具体来看一下request:

    print(response.headers, '~~~~~')
    print(response.request.headers)

上面的headers是response的,下面的是请求的headers
执行结果:

image.png

里面还有别的参数,大家可以去尝试一下。

image.png

requests默认使用Session对象, 是为了在多次和服务器端交互中保留会话的信息, 例如cookie。

直接使用Session:

image.png
image.png

我们也来尝试去打印一下这些信息:

import requests

urls = ['https://www.baidu.com/s?wd=magedu', 'https://www.baidu.com/s?wd=magedu']
session = request.session()
with session:
    for url in urls:
        response = session.get(url, headers = {
        'User-agent': "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36"
        })
    
        with response:
            print(response.text[:50])
            print('-'*30)
            print(response.cookies)
            print('-'*30)
            print(response.headers, '~~~~~')
            print(response.request.headers)

执行结果:

image.png
image.png
image.png

通过结果可以看出,Session对象对cookie起了作用。观察第一次返回的cookie与第二次发起请求的response.request.headers的cookie。返回的结果依然是键值对,只是之中value的值依然是用键值对来表示的。

配套视频课程,点击这里查看

获取更多资源请订阅Python学习站

相关文章
|
9月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
10月前
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
10月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
935 0
|
9月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
892 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
9月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
661 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
9月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
10月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
1113 19
|
9月前
|
数据采集 存储 JSON
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
|
9月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。
|
10月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1672 102

推荐镜像

更多