美文网首页
CH1 网络爬虫规则

CH1 网络爬虫规则

作者: icey_J | 来源:发表于2019-02-03 00:40 被阅读0次

网络爬虫规则

[TOC]

1. request库入门

request库的安装

win平台下,运行cmd,输入命令

pip install requests

request库的7个主要方法

方法 含义
requests.request() 构造一个请求
request.get() 获取html网页的内容
request.head() 获取html网页头信息的方法
request.post() 向html页面提交post请求
request.put() 向html页面提交put请求
request.patch() 向html页面提交局部的修改请求
request.delete() 向html页面提交删除请求

注:其中,request方法是下面6个方法的基础方法,其余6个方法都是在request方法基础上实现的,由于一般服务器都有保护防止攻击,所以put、patch、delete方法一般不使用,常用的方法为get head post方法,有关patch和put方法之间的区别下面有说。

HTTP协议

HTTP协议,也称为超文本传输协议,Hypertext transfer protocol
HTTP是一个基于 请求与响应 模式的、无状态的应用层协议,HTTP协议采用URL作为定位网络资源的标识,URL格式如下:

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

host:合法的主机域名或ip地址
port:端口号,默认为80
path:请求资源的路径
举个例子,这是死侍2的百度网盘地址https://pan.baidu.com/s/14LYNSuRFqui6xySLtbIU3g#list/path=%2F
其中,pan.baidu.com/是百度网盘的主机域名,s/14LYNSuRFqui6xySLtbIU3g#list/path=%2F是资源的路径
对于HTTP URL,可以理解为一个存在与INTERNET的文件路径通过URL和HTTP协议,存取资源,一个URL对应的是一个数据资源

HTTP协议中对资源的操作有7种方法,分别为

  • GET
    请求获取URL位置的资源
  • HEAD
    请求获取URL位置资源的响应消息报告,即获得该资源的头部信息
  • POST
    请求向URL位置的资源后附加新的数据,比如post表单之类
  • PUT
    请求向URL位置存储一个资源,覆盖原资源
  • PATCH
    请求局部更新URL位置的资源,改变部分内容
  • DELETE
    请求删除URL位置资源

注:这里要理解PATCHPUT的区别,patch仅仅是修改局部数据而且是由提交的内容来修改,put是将修改内容作为新的内容覆盖掉url地址的全部内容,path的优势在于,节省网络带宽

注意到requests库和HTTP协议的操作方式是相同的,功能也是一致的

Requests库方法详解

requests库的两个重要对象
r = requests.get(url)

r为Response 对象,包含服务器返回的内容资源,get中包含的是Request 对象,是由函数构建的发送给网页的对象,Response 对象包含服务器返回的所有信息,也包含请求的request信息

Response对象有下列属性

属性 说明
r.status_code HTTP请求的返回状态,200成功,其余表示失败
r.text HTTP响应内容的字符串形式,url对应的页面内容
r.encoding 从HTTP header中猜测编码方式
r.apparent_encoding 从内容中分析出响应内容的编码方式
r.content HTTP响应内容的二进制形式

注:如果header中不存在charset 字段,则认为编码为ISO-8859-1

Response对象存在一种异常处理方法,为

r.raise_for_status()

如果r.status_code不等于200,则引发异常,可以使用try-except捕捉

7个方法介绍
  • get() 方法

    get方法的格式为

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

    url:拟获取页面的url链接

    params:url中的额外参数,字典或字节流格式,可选

    ********kw**:12个控制访问参数

    get方法会返回response对象r,性质上述以写

  • head() 方法

    requests.head(url, **kw)
    

    返回网页HTML头的内容

    url:链接

    ****** kw:控制参数

  • post() 方法

    payload = {'k1':'v1','k2':'v2'}
    r = requests.post(url, data = payload)
    

    将字典POST后,自动编码为form

    r = requests.post(url, data = 'ABC')
    

    将字符串POST后,自动编码为data,而form为空

    格式为

    requests.post(url, data=None, json=None, **kw)
    

    url:链接

    data:字典、字节序列或文件

    json:JSON格式数据

    ********kw**:控制参数

  • put() 方法

    用法同post

    格式为

    requests.put(url, data=None, **kw)
    
  • patch() 方法

    requests.patch(url, data=None, **kw)
    
  • delete() 方法

    requests.delete(url, **kw)
    
  • request() 方法

    request方法内存在参数method,几乎可以替代所有其他的方法

    requests.request(method, url, **kw)
    

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

    url:链接

    ********kw**:控制参数

    具体的请求方式为:GET、HEAD、POST、PATCH、PUT、delete、OPTIONS

控制访问参数

一共有12个控制访问参数:

params:字典或字节序列,作为参数增加到url

kv = {key:value}
r = requests.get(url, params=kv)

=> url?key=value&key=value

data:字典、字节序列或文件对象,作为request的内容

kv = {key:value}
r = requests.post(url, data=kv)
body = '主题内容'
r = requests.post(url, data=body)

json:JSON格式的数据,作为request的内容

kv = {key:value}
r = requests.post(url, json=kv)

headers:字典,HTTP定制头,可以修改HTTP头中的内容,也就是说,可以修改头中特定字段的内容,比如用户代理user-agent

hd = {'user-agent':'Chrome\10'}
r = requests.post(url, headers = hd) #修改user-agent字段

以及

cookies:字典或cookiejar,request中的cookie

auth:元组,支持HTTP认证功能

files:字典类型,传输文件

fs = {'file':open('data.xls','rb')}
r = requests.post(url, files = fs)

还不知道怎么用

timeout:设定超时时间,秒为单位,可以用在get方法防止请求时间过长

r = requsets.get(url, timeout = 10)

proxies:字典类型,设定访问代理服务器,可以增加登陆认证

pxs = {'http':'http://user:pass@10.10.10.1:1234'
       'https':'https://10.10.10.1:4321' }
r = requests.get(url, proxies = pxs)

allow_redirects:True/False 默认为True,重定向开关

strea:布尔,默认为True,获取内容立即下载开关

verify:布尔,默认为True,认证SSL证书开关

cert:本地SSL证书路径

2. 网络爬虫盗亦有道

网络爬虫的尺寸

分为大中小三种尺寸

小规模 中规模 大规模
爬取速度不敏感,使用Request库 数据规模较大,对于爬取速度敏感,使用Scrapy库 爬取速度是关键,定制开发

网络爬虫引发问题

  1. 性能骚扰
  2. 法律风险
  3. 隐私泄露

网络爬虫的限制方法

来源审查

​ 网站服务器会通过检查来访HTTP协议的user-agent域,只响应浏览器或友好爬虫,比如淘宝= =

发布公告

​ 通过网站的robots协议,告知所有爬虫爬取策略,要求遵守,robots协议存放在网站域名的根域名下robots.txt文件,比如京东的

https://wwww.jd.com/robots.txt

内容为

User-agent: * 
Disallow: /?* 
Disallow: /pop/*.html 
Disallow: /pinpai/*.html?* 
User-agent: EtaoSpider 
Disallow: / 
User-agent: HuihuiSpider 
Disallow: / 
User-agent: GwdangSpider 
Disallow: / 
User-agent: WochachaSpider 
Disallow: /
# * 代表所有, / 代表根目录
# 例如淘宝为
# User-agent: *
# Disallow: /

Robots协议如果不遵守,有法律风险,但如果爬虫的访问频率类似于人的话,不必遵守

相关文章

  • CH1 网络爬虫规则

    网络爬虫规则 [TOC] 1. request库入门 request库的安装 win平台下,运行cmd,输入命令 ...

  • 网络爬虫和相关工具

    网络爬虫 网络爬虫(web crawler),以前经常称之为网络蜘蛛(spider),是按照一定的规则自动浏览万维...

  • 网络爬虫

    爬虫定义: 网络爬虫(又被称为网页蜘蛛,网络机器人,扒虫),网络爬虫是一个自动提取网页的程序,它按照一定的规则,自...

  • Python 网络爬虫入门详解

    什么是网络爬虫 网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序。众所周知,每个网页通常...

  • Python 网络爬虫入门详解

    什么是网络爬虫? 网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序。众所周知,每个网页通常包含...

  • Python 网络爬虫入门详解

    什么是网络爬虫? 网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序。众所周知,每个网页通常包含...

  • 如何编写一个Python网络爬虫?点进来,我教你!

    什么是网络爬虫? 网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序。众所周知,每个网页通常包含...

  • 关于爬虫

    什么是爬虫网络爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人), 是一种按照一定的规则,自动地抓取万维网信息的程序...

  • 现在什么火?爬虫,一篇文章带你全面了解爬虫

    一、爬虫介绍 1.爬虫是什么 网络爬虫(web crawler 简称爬虫)就是按照一定规则从互联网上抓取信息的程序...

  • 网络爬虫技术介绍

    什么是爬虫 一种自动获取网络页面内容的程序网络爬虫也叫作网络机器人、网络蜘蛛是一种按照一定规则,自动地抓取网络信息...

网友评论

      本文标题:CH1 网络爬虫规则

      本文链接:https://www.haomeiwen.com/subject/hbnlsqtx.html