当前位置: 首页 > news >正文

python#WS001 requests库

request库入门>

安装requests库

pip install requests

test:




r.encodingheadercharsetISO88591r.textr.encodingr.apparentencodingr.encoding

异常说明
requests.ConnectionError网络连接错误异常,如DNS查询失败、拒绝连接等
requests.HTTPErrorHTTP错误异常
requests.URLRequiredURL缺失异常
requests.TooManyRedirects超过最大重定向次数,产生重定向异常
requests.ConnectTimeout连接远程服务器超时异常
requests.Timeout请求URL超时,产生超时异常

r.raise_for_status() 如果不是200,产生异常 requests.HTTPError

r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要
增加额外的if语句,该语句便于利用try‐except进行异常处理


HTTP协议>

HTTP,Hypertext Transfer Protocol,超文本传输协议
HTTP是一个基于“请求与响应”模式的、无状态的应用层协议
HTTP协议采用URL作为定位网络资源的标识,URL格式如下:

http://host[:port][path]

  • host: 合法的Internet主机域名或IP地址
  • port: 端口号,缺省端口为80
  • path: 请求资源的路径

URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源

方法说明
GET请求获取URL位置的资源
HEAD请求获取URL位置资源的响应消息报告,即获得该资源的头部信息
POST请求向URL位置的资源后附加新的数据
PUT请求向URL位置存储一个资源,覆盖原URL位置的资源
PATCH请求局部更新URL位置的资源,即改变该处资源的部分内容
DELETE请求删除URL位置存储的资源

请编写一个小程序,“任意”找个url,测试一下成功爬取100次网页的时间。(某些网站对于连续爬取页面将采取屏蔽IP的策略,所以,要避开这类网站。)
exm_code:

#-*- coding: utf-8 -*-
import requests
import time

def getHTMLText(i,url):
    try:
        r = requests.get(url,timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        #print ("[*]%d:Access Successfully." % i)
        return
    except:
        #print ("[!]%d:Falied to Access." % i)
        return
if __name__ == "__main__":
    url = "http://www.baidu.com"
    t0 = time.time()
    for i in range(100):
        getHTMLText(i,url)
    t = time.time()
    print(t-t0)

相关文章:

  • python#WS002 beautifulsoup4
  • python#WS003 爬虫规则习题
  • 【Bugku】这是一张单纯的图片?? 【writeup】
  • 【转】隐写工具篇
  • [Bugku]密码???[writeup]
  • 【转】Linux下的cat指令
  • 【CodeVS 1007】级数求和
  • 主机接口
  • 检查针孔摄像头
  • 2018 UESTC Training for Dynamic Programming - A 樱花坡道上的初逢
  • 2018 UESTC Training for Dynamic Programming - J 如何才能保留那些美好
  • 2018 UESTC Training for Dynamic Programming - L 记忆合并
  • zip-伪加密
  • [POJ - 2386]
  • 【POJ 2823】Sliding Window 【滑动窗口/单调队列入门
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • JavaScript 奇技淫巧
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • laravel with 查询列表限制条数
  • linux安装openssl、swoole等扩展的具体步骤
  • Mysql优化
  • opencv python Meanshift 和 Camshift
  • passportjs 源码分析
  • python大佬养成计划----difflib模块
  • Vim Clutch | 面向脚踏板编程……
  • 大主子表关联的性能优化方法
  • 对超线程几个不同角度的解释
  • 翻译:Hystrix - How To Use
  • 基于遗传算法的优化问题求解
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 在weex里面使用chart图表
  • - 转 Ext2.0 form使用实例
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • # 计算机视觉入门
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $.ajax()
  • (007)XHTML文档之标题——h1~h6
  • (4) PIVOT 和 UPIVOT 的使用
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (day 12)JavaScript学习笔记(数组3)
  • (四)模仿学习-完成后台管理页面查询
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net Application的目录
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core 6 集成和使用 mongodb
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .net refrector
  • .net 生成二级域名
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)