程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

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

发布于2020-03-27 18:20     阅读(989)     评论(0)     点赞(21)     收藏(5)


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("发生异常!")

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

原文链接:https://blog.csdn.net/weixin_43872109/article/details/105120065



所属网站分类: 技术文章 > 博客

作者:dfd323

链接:https://www.pythonheidong.com/blog/article/287189/4cfa6ed297e59348f464/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

21 0
收藏该文
已收藏

评论内容:(最多支持255个字符)