爬虫 404 try_爬虫1-Requests

本文源于嵩天老师的爬虫课程。

  1. 网页是个API。

使用python中requests库可以自动爬取html页面,进行提交和请求。

2 reques库的安装。

我本人在更新win10 2004版本时发生错误,不得已重装了系统,重装后删除了原来所有python相关内容,在python官网下载了IDLE,在清华镜像下载了最新版的anaconda,因为anaconda自带requests库,所有没有安装。使用IDLE安装时可以试用pip命令安装(注意先升级pip命令)

3. requests的七个主要方法:

3.1 requests.requests( )方法:

构造一个请求,支撑以下各方法的基础方法

3.2 requests.get( )方法:

requests.get(url,params=None,**kwargs)

url:请求访问的网页的url链接

params:可选参数,字典或字节流格式

**kwargs:12个控制访问的参数

获取的信息被存储后嵩天老师称为response对象,即:

r=requests.get("http://www.bing.com")

其中,r即为response对象。

3.2.1 response对象的属性:

r.status_code //HTTP请求的返回状态,200为连接成功,404表示连接错误

r.text //HTTP响应内容的字符串形式,即,url对应的页面内容。

r.encoding //从HTTP header的charste中获得的响应内容编码方式(猜测),若不存在charset,则返回ISO-8859-1

r.apparent_encoding //(备选编码)从内容中分析出的响应内容编码方式

r.content //HTTP响应内容的二进制格式

3.2.2爬取网页的通用框架(爬取时的异常处理)

import requests
def getHTMLText(url):
    try:
        r=requests.get(url,timeout=30) //连接时间大于30秒则结束
        r.raise_for_status()           //若返回状态不是200,则引发HTTPError
        return r,text
    except:
        return "error"
if __name__=='__main__':
   url="http://www.baidu.com"         //所要爬取的网页
   print(getHTMLText(url))

常见requests异常说明:

a:requests.ConnectionError:网络连接错误:如dns查询失败、拒绝连接等

b:requests.HTTPError:HTTP错误异常

c:requests.URLRequired:URL缺失异常

d:requests.TooManyRedirects:超过最大定向次数,产生定向异常(redirects:重新寄送)

e:requests.ConnectTimeout:连接远程服务器超时异常

f:requests.Timeout:请求URL超时,产生超时异常。

response异常:

r.rase_for_status() //若不是200,产生异常requests.HTTPError

3.3 requests的6个主要方法:

由于requests库的方法和HTTP协议方法在功能上一致性相同,因此了解HTTP协议即可。

713e264b35fd8d6657afa72bc618808e.png

3.3.1 HTTP协议:Hypertext Transfer Protocol,超文本传输协议。HTTP是一个基于请求与响应模式的、无状态(第一次响应和第二次响应无关联)的应用层协议(工作在TCP协议之上),HTTP协议采用url作为定位网络资源的标识,url格式如下:

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

host:合法的Internet主机域名或IP地址

port:端口号,缺省端口为80

path:请求资源的(内部)路径

eg:http://www.bit.edu.cn

http://220.181.111.188/duty

3.3.2 HTTP协议对资源的操作:

GET:请求获取URL位置的资源

HEAD:请求获取URL位置资源的响应消息报告,即获得该资源的头部信息。

POST:请求向URL位置的资源后附加新的数据

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

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

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

3.4 requests库主要方法解析:
3.4.1 requests.request(method,url,**kwargs)

method:请求方式,对应get/put/post等七种

url:拟或缺页面的url链接

**kwargs:控制访问参数共13个,均为可选,如下:

(1). params:字典或字节序列,作为参数增加到url中(添加字符)

kv={'key1':'value1','key2':'value2'}

r=requests.request('GET','http://python123.io/ws',params=kv)

print(r.url)

>>>http://python123.io/ws?key1=value1&key2=value2

(2).headers:字典,定义头字段

hd={'user-agent':'chrome/10'}

r=requests.request('POST','http//http://python123.io/ws',headers=hd)

(3).data:向服务器提交或提供字典,字节序列,或文件对象,作为request的内容

(4).json:向服务器提交json格式数据

(5).files:字典类型,传输文件

fs={'file':open('data.excel','rb')}

r=requests.request('POST','http://python123.io/ws',files=fs)

(6).cookies:字典或cookiejar,request中的cookie

(7).atth:元组,支持HTTP认证功能

(8).timeout:设定超时时间,以秒为单位

r=requests.request('GET','http://www.baidu.com',timeout=30)

(9).proxies:字典类型,设定访问代理服务器,增加登录认证

pxs={'http':'http://user:pass@10.10.10.1:1234'

'https':'https://10.10.10.1:4321'}

r=requests.request('GET','http://baidu.com',proxies=pxs)

(10).allow_redirects:True/False,默认为True,重定向开关

(11).stream:True/False,默认为True,获取内容立即下载开关

(12).verrfy:True/False,默认为True,认证SSL证书开关.

(13). cert:本地SSL证书路径

3.4.2 其他方法的参数

get方法除了request无法使用之外,均与request方法相同,参数也相同.其他由于不常用,需要时可网上查询.

4. robots协议:

由于滥用爬虫危害巨大,因此出现了公告性的robots协议,主要内容如下:

(1).协议一般在网站根目录下的robots.txt:如http://www.baidu.com/robots.txt

(2).规定了不允许项和恶意爬虫软件
user_agent:* //*代表所有软件

disallow: //不允许访问的目录或格式

(3).小型爬虫使用request框架,中型爬虫使用scrapy框架

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值