【最全笔记】基础Python爬虫入门,看完包你会写爬虫


第一章 网络爬虫之规则


一、Requests库入门
  1. request库:http://www.python-requests.org
  2. 安装方法:pip install requests
  3. 抓取百度
import requests
r=requests.get("http://www.baidu.com")
r.status_code
r.encoding='utf-8'
r.text
  1. requests库的7个主要方法
方法 说明
requests.request() 构造一个请求,支撑以下各方法的基础方法
requests.get() 获取HTML网页的主要方法,对应于HTTP的GET
requests.head 获取网页头信息的方法,对应于HTTP的HEAD
requests.post() 向HTML网页提交POST请求的方法,对应于HTTP的POST
requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch 向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete 向HTML页面提交删除请求,对应于HTTP的DELETE
requests库的get()方法
  1. 获取网页最简单的方法:r=requests.get(url)
    • 构造一个向服务器请求资源的Request对象
    • 返回一个包含服务器资源的Response对象
  2. 形式
    requests.get(url,params=None,**kwargs)
    
    • url:拟获取页面的url链接
    • params:url中的额外参数,字典或字节流格式,可选
    • kwargs:12个控制访问的参数
  3. Response对象:包含爬虫返回的内容
    • 常用的五个属性
属性 说明
r.status_code HTTP请求的返回状态,200表示连接成功,404表示失败
r.text HTTP响应内容的字符串形式,即,url对应的页面内容
r.encoding 从HTTP header中猜测的响应内容编码方式
r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
r.content HTTP响应内容的二进制形式
  1. 基本流程
graph TD
A(r.status_code)-->|200| B(r.text,r.encoding,r.apparent_encoding,r.content)
A-->|404或其他| C(某些原因出错将产生异常)
  1. 理解Response的编码
    • r.encoding:如果header中不存在charset,则认为编码为ISO-8859-1
    • r.apparent_encoding:根据网页内容分析出的编码方式
理解Requests库的异常
异常 说明
requests.ConnectionError 网络连接错误异常,如DNS查询失败、拒绝连接等
requests.HTTPError HTTP错误异常
requests.URLRequired URL缺失异常
requests.TooManyRedirects 超过最大重定向次数,产生重定向异常
requests.ConnectTimeout 连接远程服务器超时异常
requests.Timeout 请求URL超时,产生超时异常
r.raise_for_status() 如果不是200,产生异常requests.HTTPError
  1. 通用代码框架
import requests
def getHTMLText(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return "Error"
if __name__=="__main__":
    url=""
    print(getHTMLText(url)
HTTP协议及Requests库方法
  1. HTTP:超文本传输协议,基于请求与响应模式的无状态的应用层协议,采用URL作为定位网络资源的标识。
  2. URL格式:http://host[:port][path]
    • host:合法的Internet主机域名或IP地址
    • port:端口号,缺省端口为80
    • 请求资源的路径
  3. HTTP协议对资源的操作
方法 说明
GET 请求获取URL位置的资源
HEAD 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息
POST 请求向URL位置的资源后附加新的数据
PUT 请求向URL位置存储一个资源,覆盖原URL位置的资源
PATCH 请求局部更新URL位置的资源,即改变该资源的部分内容
DELETE 请求删除URL位置存储的资源
  1. HTTP协议对资源的操作
graph LR
A(人)-->|PUT POST PATCH DELETE| B(URL)
B-->|GET HEAD| A
  1. 理解PATCH和PUT的区别
    • 假设URL位置有一组数据UserInfo,包括UserID、UserName等20个字段,需求是用户修改了UserName,其他不变
      • 采用Patch,仅向URL提交UserName的局部更新请求
      • 采用PUT,必须将所有20个字段一并提交到URL,未提交字段被删除
    • PATCH节省网络带宽
Requests库主要方法解析
  1. .request(method,url,**kwargs)
    • method:请求方式,对应get、put、post等7种

    • url:拟获取页面的url链接

    • **kwargs:控制访问的参数,共13个

      • params:字典或字节序列,作为参数增加到url中
      import requests
      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=value2
      
      • data:字典、字节序列或文件对象,作为Request的内容
      kv={'key1':'value1','key2':'value2'}#也可以字符串
      r=requests.request('POST','http://python123.io/ws',data=kv)
      
      • json:JSON格式的数据,作为Request的内容
      kv={'key1':'value1'}
       r=requests.request('POST','http://python123.io/ws',json=kv)
      
      • headers:字典,HTTP定制头
      hd={'user-agent':'Chrome/10'}
       r=requests.request('POST','http://python123.io/ws',headers=hd)
      
      • cookies:字典或CookieJar,Request中的cookie
      • auth:元组,支持HTTP认证功能
      • files:字典类型,传输文件
      fs={'file':open('data.xls','rb')}
       r=requests.request('POST','http://python123.io/ws',files=fs)
      
      • timeout:设定超时时间,秒为单位
      pxs={'http':'http://user:pass@10.10.10.1:!234'
           'https':'https://10.10.10.1:4321'}
       r=requests.request('POST','http://python123.io/ws',pr
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jingwei1205

宝贝儿 施舍施舍吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值