打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python学习笔记 | 爬虫基础之requests模块详细介绍

【前言】requests 模块是 python 基于 urllib的 HTTP 库,它比 urllib 更加方便,完全满足 HTTP 测试需求。这里之所以把它放在爬虫基础里介绍,是因为它在网络爬虫代码里最为常用。使用requests库,可以方便快捷地获取一个Web页面的源代码,用作下一步分析和提取需求数据。注意,使用这个模块之前需要先安装。


一、requests的常用方法

GET:使用GET请求方式获取URL位置的资源(最常用)

HEAD:获取资源的头部信息

POST:使用POST请求方式获取URL位置的资源

PUT:请求向URL位置存储一个资源,覆盖原URL位置的资源

PATCH:请求局部更新URL位置的资源,即改变该处资源的部分内容

DELETE:请求删除URL位置存储的资源


二、GET方法详细介绍

requests模块的GET方法,对应HTTP中的GET请求。主要用来向Web页面发送请求,得到响应数据,即Web页面的内容。这是网络爬虫迈出的第一步!

(一)基本语法

语法:resp = requests.get(url)

注释:

  • 结果变量resp,指的是一个Response,一个包含服务器资源的对象
  • url为基准的url地址,不包含查询参数

(二)常用参数

1、url

字符串类型,requests 发起请求的地址。

url为基准的url地址,不包含查询参数。

示例代码:

import requestsurl = 'https://www.baidu.com'resp = requests.get(url)print(resp)运行结果:<Response [200]>

【注】运行结果显示,requests的get方法返回的是一个Response对象,200是状态码,表示响应状态为正常(OK)。

2、params

字典类型,用来携带查询参数。

该方法会自动对params字典进行编码,然后和url拼接。

示例代码:

import requestsurl = 'https://www.baidu.com'params = {'wd' : 'python'}resp = requests.get(url, params = params)

【注】上面代码实际的请求地址是https://www.baidu.com/s?wd=python

3、headers

字典类型,请求头,用来携带请求标头信息。

有些网站为了防止爬虫,要求请求信息中必须携带标头信息。因为正常使用浏览器访问网站时,标头信息中会包含浏览者的操作系统、浏览器类型等信息,而爬虫是使用requests模块发送的请求,默认请求头内容为空,所以可以简单阻挡爬虫的访问。

请求头中最常用的参数是User-Agent,即很多网站需要检测的内容。获取User-Agent的方法和步骤如下(网络抓包):

  • 在需要访问的Web页面的空白处按鼠标右键,在弹出菜单中选择“检查”,这时浏览器的右侧或下方会出现一个分屏。
  • 在分屏上面的菜单中选择“网络”(Network),这时又会多出几行选项菜单。在“筛选器”一行中选择“全部”(All)。
  • 在页面浏览窗口刷新或者点击一个链接,这时在分屏中会出现很多请求信息。在请求信息的“名称”栏中任意点击一个请求名称,右侧会显示各种信息,包括:标头、预览、响应、发起程序、计时。
  • 点击“标头”(Headers),这里面包含了本次请求及服务器响应的全部信息,页面最底下就是User-Agent信息,使用鼠标将User-Agent信息选择并复制,然后粘贴到自己的python程序中使用。

以上过程的演示视频如下:

00:00 / 00:00
2X快进中
重播
播放
00:00 00:00
进入全屏
画中画
    点击按住可拖动视频

    示例代码:

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

    【注】上面代码中的headers的内容,就是复制粘贴过来的User-Agent信息,需要自行改成字典格式。

    4、cookies

    字典类型,携带登录状态等信息。

    有些网站需要请求中携带cookies信息,可以使用上面获取User-Agent信息的方法来获取,这里不再演示。

    5、proxies

    字典类型,用来设置代理 ip 服务器,获取和使用方法同上。

    6、timeout

    整数类型,用于设定请求超时时间, 单位为秒。

    timeout参数在写爬虫时非常重要。

    有时可能由于网络或服务器等原因,使得访问页面响应变得很慢或者干脆没有响应,如果我们的requests请求没有设置超时时间,那么程序就会卡死。因此在写爬虫时,如果爬取的url地址很多,那么就需要在requests的get方法中设置超时时间,超过时限就会跳过这个url地址继续爬取下面的url。

    (三)response常用属性和方法

    response即requests.get()的返回结果,通过response的属性和方法就可以获得目标页面的各种数据。

    1、status_code属性

    status_code即状态码,http请求的返回状态,若为200则表示请求成功。

    在爬虫代码中,通常使用status_code属性,跳出响应异常的requests请求或者结束程序运行。

    示例代码:

    import requestsurl = 'https://www.baidu.com'resp = requests.get(url)if resp.status_code != 200:    raise Exception('请求发生异常!')print(resp.status_code)

    2、text属性

    http响应内容的字符串形式,即返回的页面内容。爬虫就是解析这个内容,获取需要爬取的数据。

    示例代码:

    import requestsurl = 'https://www.baidu.com'resp = requests.get(url)if resp.status_code != 200: raise Exception('请求发生异常!')print(resp.text)运行结果:<!DOCTYPE html><!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class='bg s_ipt_wr'><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus=autofocus></span><span class='bg s_btn_wr'><input type=submit id=su value=百度一下 class='bg s_btn' autofocus></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a> <a href=https://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>视频</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登录</a> </noscript> <script>document.write('<a href='http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === '' ? '?' : '&')+ 'bdorz_come=1')+ '' name='tj_login' class='lb'>登录</a>'); </script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style='display: block;'>更多产品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>©2017 Baidu <a href=http://www.baidu.com/duty/>使用百度前必读</a> <a href=http://jianyi.baidu.com/ class=cp-feedback>意见反馈</a> 京ICP证030173号 <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>

    3、content属性

    http响应内容的二进制形式,语法同上。

    4、encoding属性

    用来设置response的编码格式,如果请求的页面中包含中文,那么就需要设置encoding属性。

    示例代码:

    resp.encoding = 'utf-8' 或 resp.encoding = 'gbk'

    5、raise_for_status()方法

    该方法判断status_code是否等于200,如果不等于,则抛出异常。功能与我们自己写的判断语句相同,但是不能自行设置错误提示信息。

    6、json()方法

    获取http响应内容的 json 格式数据


    三、POST方法简介

    requests模块的POST方法,对应HTTP中的POST请求,功能和使用方法与GET方法大同小异。

    POST方法需要将表单数据封装到data参数中,封装形式可以是字典、json、元组等。

    示例代码:

    import requestsurl = 'http://www.abc.com/post'# 字典数据dict_data = {'key1': 'value1', 'key2': 'value2'}# 元组数据tuple_data = (('key1', 'value1'), ('key1', 'value2'))# json数据json_data = json.dumps({'some': 'data'})resp1 = requests.post(url, data=dict_data)resp2 = requests.post(url, data=tuple_data)resp3 = requests.post(url, data=json_data)
    本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
    打开APP,阅读全文并永久保存 查看更多类似文章
    猜你喜欢
    类似文章
    【热】打开小程序,算一算2024你的财运
    如何抓取视频资源-以头条视频为例
    网络爬虫入门:你的第一个爬虫项目(requests库)
    第102天: Python异步之aiohttp
    Python网络爬虫(三)——网络蜘蛛是如何模拟人的行为?
    你要偷偷的学Python,然后惊呆所有人(第七天)
    Python爬虫Resquests库的使用
    更多类似文章 >>
    生活服务
    热点新闻
    分享 收藏 导长图 关注 下载文章
    绑定账号成功
    后续可登录账号畅享VIP特权!
    如果VIP功能使用有故障,
    可点击这里联系客服!

    联系客服