当前位置: 首页 > 后端技术 > Python

Python网络爬虫Requests库的基本使用

时间:2023-03-26 19:44:01 Python

官网地址:Requests:HTTPforHumandocs.python-requests.org安装方法:pipinstallrequests测试一:importrequestsr=requests.get('www.baidu.com')Requests库的七个主要方法:requests.request()构造一个request,支持以下方法的基本方法。requests.get()是获取HTML页面的主要方法,对应HTTP的获取HTML的GETrequests.head()方法页面头部信息的主要方法对应HTTP的HEADrequests.post()方法,向HTML提交POST请求网页,对应HTTP的POSTrequests.put()方法向HTML网页提交PUT请求,对应HTTP的PUTrequests.patch()方法提交对HTML网页的部分修改,对应HTTP的PATCHrequests.delete()提交删除到HTML网页,对应HTTP的DELETErequests.request(method,url,**kwargs)kwargs:控制访问的参数,全部可选1.params:字典或字节序列,作为参数添加到URL>>>kv={'key1':'value1','key2':'value2'}>>>r=requests.request("GET",'http://python123.io/ws',params=kv)>>>print(r.url)https://python123.io/ws?key1=value1&key2=value22.data:字典,字节序列或File对象,作为Request的内容>>>kv={'key1':'value1','key2':'value2'}>>>r=requests.request('POST','http://python123.io/ws',data=kv)>>>body="蟒蛇">>>r=requests.request('POST','http://python123.io/ws',data=body)3.JSON:JSON格式的数据,作为Request的内容>>>kv={'key1':'value1'}>>r=requests.request('POST','http://python123.io/ws',json=kv)4.headers:字典,HTTP自定义header>>>hd={'user-agent':'Chrome/10'}>>>r=requests.request('POST','http://python123.io/ws',headers=hd)5.cookies:dictionaryorCookieJar,cookie6inRequest.auth:祖先,支持HTTP认证功能7.files:字典类型,传输文件>>>fs={'file':open('data.xls','rb')}>>>r=requests.request('POST','http://python123.io/ws',files=fs)8.timeout:设置超时时间,单位秒>>>r=requests.request("GET",'http://www.baidu.com',timeout=10)9.proxies:字典类型,设置访问代理服务器,可以添加登录认证pxs={'http':'http://user:pass@10.10.10.1:1234','https':'https://10.10.10.1:4321'}r=requests.request('GET','http://www.baidu.com',proxies=pxs)10.allow_redirects:True/False,默认为True,重定向开关11.stream:True/False,默认为True,立即获取内容并下载开关12.verify:True/False,默认为True,验证SSL证书开关13.cert:保存本地SSL证书路径请求使用s.get()方法:r=requests.get(url,params=None,**kwargs)url:页面的URL链接params:URL、字典或字节流格式的附加参数**kwargs:12控制访问的参数其他requests方法的使用同requests.request方法Response对象的属性r=requests.get(url)构造一个Request对象,向服务器请求资源,返回一个Response对象\>>>importrequests\>>>r=requests.get("(http://www.baidu.com/)")\>>>print(r.status_code)200\>>>type(r)\>>>r.headers{'Cache-Control':'private,no-cache,no-store,proxy-revalidate,no-transform','Connection':'keep-alive','Content-Encoding':'gzip','Content-Type':'text/html','Date':'Tue,11Feb202004:26:11GMT','Last-Modified':'Mon,23Jan201713:27:56GMT','Pragma':'no-cache','Server':'bfe/1.0.8.18','Set-Cookie':'BDORZ=27315;最大年龄=86400;[域名=.baidu.com](http://domain=.baidu.com/);path=/','Transfer-Encoding':'chunked'}属性描述了r.status_codeHTTP请求的返回状态,200表示连接成功,404表示失败r.textHTTP对应的字符串形式的内容,即,URL对应的页面内容r.encoding从HTTP头中猜测响应内容编码方式r.apparent_encoding从内容中分析响应内容编码方式(备选编码方式)r.contentHTTP响应内容的二进制形式编码为很重要:如果网页的编码方式是ISO-8895-1,那么r.text就是用来查看乱码的。r.encoding只是分析网页头部,猜测编码方式,而r.apparent_encoding实际上是根据网页内容来分析编码方式。因此,在爬虫程序中,经常使用r.encoding=r.apparent_encoding来直接获取网页的编码。网页爬取通用代码框架:异常描述requests.ConnectionError网络连接错误异常,如DNS查询失败,连接拒绝等重定向异常请求中.ConnectTimeout连接远程服务器超时异常requests.Timeout请求URL超时,发生超时异常响应异常捕获异常说明r.raise_for_status()如果不为200则产生异常requests.HTTPError一般代码框架如下:importrequestsdefgetHTMLText(url):try:r=requests.get(url,timeout=30)#30秒超时异常r.raise_for_status()#如果r返回的status不是200,就会出现HTTPError异常提高r.encoding=r.apparent_encodingreturnr.textexcept:return"Exception"if__name__=="__main__":url="http://www.baidu.com"print(getHTMLText(url))报错测试:>>>u="http://b.com">>>print(getHTMLText(u))产生HTTP协议异常---超文本传输??协议,请求响应,无状态模式URL格式http://host[:port][path]host:合法的互联网主机域名或IP地址[:port]:端口号,默认端口为80[path]:请求资源的路径HTTP协议操作方法资源说明获取资源的头部信息URL位置PATCH请求以部分更新URL位置的资源,也就是在这里更改资源的部分内容。DELETE请求删除存储在URL位置的资源。Requests库的方法和HTTP协议一一对应。

最新推荐
猜你喜欢