python日记Day20——网络爬虫之requests库

python日记——网络爬虫之requests库

  • 网络爬虫与信息提取流程图
    在这里插入图片描述
  • HTTP协议
    1、HTTP,Hypertext Transfer Protocol,超文本传输协议,HTTP是一个基于“请求与响应”模式的、无状态的应用层协议,HTTP协议采用URL作为定位网络资源的标识,URL格式如下:http://host[:port][path]
    host: 合法的Internet主机域名或IP地址
    port: 端口号,缺省端口为80
    path: 请求资源的路径
    2、HTTP协议对资源的操作:
    在这里插入图片描述
  • Requests库入门
    1、Requests库的七个主要方法
    在这里插入图片描述
    requests.request(method, url, *kwargs) 方法是requests库其余六个方法的基础,它们都是通过requests.request()封装而成,因此,掌握requests.request()方法便可以掌握其余六种方法:
    ∙ method : 请求方式,对应get/put/post等7种
    ∙ url : 拟获取页面的url链接
    ∙ *kwargs: 控制访问的参数,共13个
    (1)params : 字典或字节序列,作为参数增加到url中
    (2)data : 字典、字节序列或文件对象,作为Request的内容
    (3)json : JSON格式的数据,作为Request的内容
    (4)headers : 字典,HTTP定制头
    (5)cookies : 字典或CookieJar,Request中的cookie
    (6)auth : 元组,支持HTTP认证功能
    (7)files : 字典类型,传输文件
    (8)timeout : 设定超时时间,秒为单位
    (9)proxies : 字典类型,设定访问代理服务器,可以增加登录认证
    (10)allow_redirects : True/False,默认为True,重定向开关
    (11)stream : True/False,默认为True,获取内容立即下载开关
    (12)verify : True/False,默认为True,认证SSL证书开关
    (13)cert : 本地SSL证书路径
    2、Requests库的2个重要对象
    在这里插入图片描述
    Response对象的属性:
    在这里插入图片描述
    注意:
    r.encoding:如果header中不存在charset,则认为编码为ISO‐8859‐1,r.text根据r.encoding显示网页内容;
    r.apparent_encoding:根据网页内容分析出的编码方式,可以看作是r.encoding的备选。
    3、爬取网页的通用代码框架
    网络连接有风险,异常处理很重要
    (1)理解Requests库的异常:
    在这里插入图片描述
    r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要
    增加额外的if语句,该语句便于利用try‐except进行异常处理
    (2)通用代码框架:
    在这里插入图片描述
  • 网络爬虫的“盗亦有道”
    1、网络爬虫的尺寸:
    在这里插入图片描述
    2、网络爬虫引发的问题:
    性能骚扰、法律风险、隐私泄露
    3、网站如何限制网络爬虫:
    (1)来源审查:判断User‐Agent进行限制
    检查来访HTTP协议头的User‐Agent域,只响应浏览器或友好爬虫的访问
    (2)发布公告:Robots协议
    作用:网站告知网络爬虫哪些页面可以抓取,哪些不行
    形式:在网站根目录下的robots.txt文件
    在这里插入图片描述
  • 爬虫案例:

1、入门案例

import requests as rq
url = 'https://www.baidu.com/'
try:
    r = rq.get(url)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[0:500])
except:
    print("发生异常!")

2、修改头部信息隐藏自身,防止被ban

 kv = {'user-agent':'Mozilla/5.0'}
 r = rq.get(url,header=kv)

3、根据url接口传入对应参数
百度的关键词接口:
http://www.baidu.com/s?wd=keyword
360的关键词接口:
http://www.so.com/s?q=keyword

kv = {'wd':'python'}
r = rq.get(url,params=kv)

4、图片抓取:

import requests as rq
import os
url = 'http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg'
path = 'D://Temp//abc.jpg'
try:
    r = rq.get(url)
    r.raise_for_status()
    with open(path,'wb') as f:
       f.write(r.content)#图片以二进制形式保存
       f.close()
       print("文件保存成功!")
except:
    print("发生异常!")

本文部分内容参考于北京理工大学嵩天老师相关课程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值