【python爬虫笔记】网络爬虫之规则

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_37378518/article/details/81490404

WEEK1

Unit 1 Requests库入门

Requests库的get()方法

Requests库的7个主要方法

  • reqest() 构造一个请求,支撑一下各方法的基础方法
  • get() 获取html网页的主要方法,对应于http的get
  • head() 获取html网页头信息的方法,对应于http的head
  • post() 向html网页提交post请求的方法,对应于http的post
  • put() 向html网页提交put请求的方法,对应于http的put
  • patch() 向html网页提交局部修改请求,对应于http的patch
  • delete() 向html网页提交删除请求,对应于http的delete

Response对象包含服务器返回的所有信息,也包含请求的Request信息

Response对象属性

  • r.status_code HTTP请求的返回状态
  • r.text HTTP响应内容的字符串形式,即URL对应的页面内容
  • r.encoding 从HTTP header中猜测的响应内容编码方式
  • r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
  • r.content HTTP响应内容的二进制形式

r.encoding:如果header中不存在charset,则认为编码为ISO-8859-1

r.text根据r.encoding显示网页内容

r.apparent_encoding:可以看作r.encoding的备选


爬取网页的通用代码框架
理解Requests库的异常
  • requests.ConnectionError 网络连接错误,如DNS查询失败,拒绝连接
  • requests.HTTPError HTTP错误异常
  • requests.URLRequired URL缺失异常
  • requests.TooManyRedirects 超过最大重定向次数,产生重定向异常
  • requests.ConnectionTimeout 连接远程服务器超时异常
  • requests.Timeout 请求URL异常,产生超时异常

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

def getHTMLText(url):
    try:
        r = requests.get(url, timeout = 30)
        r.raise_for_status()  #如果状态不是200, 引发HTTPError异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "异常产生"


HTTP协议及Requests库方法
Requests库的7个主要方法
  • request() 构造一个请求,支撑一下各方法的基础方法
  • get() 获取HTML网页
  • head() 获取HTML网页头部信息
  • post() 向HTML网页提交POST请求
  • put() 向HTML网页提交PUT请求
  • patch() 想HTML网页提交局部修改
  • delete() 向HTML页面提交删除请求

PATCH和PUT的区别:

  • 假设URL位置有一组数据UserInfo,包括userID、userName等20个字段
  • 需求:用户修改了userName,其他不变
  • PATCH:仅向URL提交userName的局部更新请求
  • PUT :必须将20个字段一并提交到URL,未提交字段被删除
Requests库主要方法解析

request(method, url, **kwargs) 其余几个方法都是基于此

扫描二维码关注公众号,回复: 4816463 查看本文章
  • method 请求方式,对应有get/pt/post等7种
  • url 拟获取页面的url链接
  • **kwargs 控制访问的参数,共13个,均为可选项
    • params 字典或字节序列,作为参数增加到url中
    • data 字典、字节序列或文件对象,作为Requests的内容
    • json JSON格式的数据,作为Requests的内容
    • headers 字典,HTTP定制头
    • cookies 字典或CookieJar,Request中的cookie
    • auth 元组,支持HTTP认证功能
    • files 字典类型,传输文件
    • timeout 设定超时时间,单位秒
    • proxies 字典类型,设定访问代理服务器,可以增加登录认证
    • allow_redirects True/False,默认为True,重定向开关
    • stream True/False,默认为True,获取内容立即下载开关
    • verify True/False,默认为True,认证SSL证书开关
    • cert 本地SSl证书路径


Unit 2 网络爬虫的“盗亦有道”

网络爬虫的限制
  • 来源审查:判断User-Agent进行限制。检查来访HTTP协议头的User-Agent域,只响应浏览器或友好爬虫的访问
  • 发布公告:Robots协议。告知所有爬虫网站的爬取策略,要求爬虫遵守
Robots协议
  • 作用:网站告知网络爬虫哪些页面可以抓取,哪些不行
  • 形式:在网站根目录下的robots.txt文件

Robots协议的使用

  • 网络爬虫:自动或人工识别robots.txt,再进行内容爬取
  • 约束性:Robots协议是建议但非约束性,网络爬虫可以不做手,但存在法律风险

原则: 类人行为可不参考Robots协议

猜你喜欢

转载自blog.csdn.net/baidu_37378518/article/details/81490404