博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬虫常识
阅读量:6933 次
发布时间:2019-06-27

本文共 4137 字,大约阅读时间需要 13 分钟。

爬虫在使用场景中的分类

#1、通用爬虫        抓取系统的重要部分,抓取的是一整张页面的数据#2、聚焦爬虫        是建立在通用爬虫的基础上,抓取的似乎页面中的特定的局部内容#3、增量式爬虫        检测网站中数据更新的情况,只会抓取网站中最新更新出来的数据

 

robots.txt协议

君子协议

User-agent:  BaiduspiderAllow:  /articleAllow:  /oshtmlAllow:  /ershouAllow: /$Disallow:  /product/Disallow:  /User-Agent:  GooglebotAllow:  /articleAllow:  /oshtmlAllow:  /productAllow:  /spuAllow:  /dianpuAllow:  /overseaAllow:  /listAllow:  /ershouAllow: /$Disallow:  /User-agent:  BingbotAllow:  /articleAllow:  /oshtmlAllow:  /productAllow:  /spuAllow:  /dianpuAllow:  /overseaAllow:  /listAllow:  /ershouAllow: /$Disallow:  /User-Agent:  360SpiderAllow:  /articleAllow:  /oshtmlAllow:  /ershouDisallow:  /User-Agent:  YisouspiderAllow:  /articleAllow:  /oshtmlAllow:  /ershouDisallow:  /User-Agent:  SogouspiderAllow:  /articleAllow:  /oshtmlAllow:  /productAllow:  /ershouDisallow:  /User-Agent:  Yahoo!  SlurpAllow:  /productAllow:  /spuAllow:  /dianpuAllow:  /overseaAllow:  /listAllow:  /ershouAllow: /$Disallow:  /
https://www.taobao.com/robots.txt

 

两种协议与三种加密方式

http协议与https协议

#概念:都是服务器与客户端进行数据交互的一种形式#只不过https是安全的超文本传输协议 常用的请求头信息     User-Agent:请求载体的身份标识     Connection:求情完毕后,是断开连接还是保持连接 常用的响应头信息     Content-Type:服务器响应回客户端的数据类型 https采用的是证书密钥加密

 UA伪装

#UA:User-Agent(请求载体的身份标识)#UA检测:门户网站的服务器会检测对应请求的载体标识,如果检测请求的载体身份标识为某一款浏览器,说明请求是一个正常的请求。反正为不正常请求(爬虫),服务器就很有可能拒绝该次请求#UA伪装:让爬虫对用的请求载体身份标识伪装成浏览器

 

三种加密方式

#1、对称密钥加密#2、非对称密钥加密#3、证书密钥加密
#对称密钥加密的基本工作流程1、客户端制定一套加密规范,对数据进行加密,2、在传输过程中,把加密规范(密钥)同数据一块发送给服务器3、服务器拿到加密数据以及密钥,进行解密,进而拿到客户端传递的数据#弊端: 在密钥和加密数据的传递过程中,很可能被第三方拦截到,第三方可直接解密,直接拿到数据
对称密钥加密的基本工作流程以及弊端
#非对称加密是使用的时候,有两把锁,公开密钥(公钥)和私有密钥(私钥)#非对称密钥加密的基本工作流程:服务器端设置公钥,并发送给客户端, 客户端按照公钥进行加密,把加密数据发送给服务端服务端拿到加密数据,使用自己的私钥进行解密因为解密的密钥不会进行传输,因此,即使拿到公钥和数据,也很难解密,#但是也存在弊端,一、非对称加密的凡是效率比较低,它处理起来更为复杂,影响通信速度二、无法保证客户端所拿到的公钥就是服务器发过来的        如果公钥在发送过程中被拦截(例如django的中间件),然后对公钥进行篡改,把篡改之后的公钥发送给客户端,            客户端按照被篡改的公钥进行加密
非对称密钥加密的基本工作流程及优缺点
证书密钥加密的基本工作原理与非对称密钥相似只不过在公钥传输过程中,加入了第三方认证机构公钥------->>证书认证机构(给公钥签名)----->>证书-------->>客户端
证书密钥加密

 

 

requests模块

pip install requests#requests模块:    python中原生的一款基于网络请求的模块,简单便捷,效率极高,功能非常清大,(只要掌握了requests模块,就掌握了爬虫占据了爬虫领域的半壁江山)    #作用:   模拟浏览器发请求#如何使用:        指定url        发起请求        获取响应数据        持久化存储

 

 

 

 requests实战之网页采集器

import requests# https://www.baidu.com/s?wd=%E5%8D%8E%E4%B8%BA# 问号要不要都行if __name__ == '__main__':    headers = {        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'    }    url='https://www.baidu.com/s'    kw=input('enter a word:')    param={        'wd':kw    }    response = requests.get(url=url,params=param,headers=headers)    page_text = response.text    fileName=kw+'.html'    with open(fileName,'w',encoding='utf-8')as f:        f.write(page_text)        print('保存成功')
网页采集器

 

import json,requestsif __name__ == '__main__':    # 1、指定url    post_url = 'https://fanyi.baidu.com/sug'    # 2、进行UA伪装    headers = {        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'    }    word=input('>>:')    data = {
'kw':word} # 发送请求 response = requests.post(url=post_url,data=data,headers=headers) # 获取响应数据,json()方法返回到是obj,(只有在确认是json数据类型才可以使用,content-type: application/json可以确认) dic_obj = response.json() fileName = word+'.json' fp=open(fileName,'w',encoding='utf-8') json.dump(dic_obj,fp,ensure_ascii=False) print('over!!!')
百度翻译

 

#有的页面并非是全局刷新,很多是通过ajax局部刷新的(动态加载出阿里的),如果指定该url,并不能拿到想要的数据,#两种方式检测是否是局部刷新#方式一、直接用代码验证import requestsif __name__ == '__main__':    url='http://125.35.6.84:81/xk/'    headers = {        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}    page_text = requests.get(url=url,headers=headers).text    with open('./huazhuang.html','w',encoding='utf-8')as f:        f.write(page_text)#通过打开html文件发现,此页面与直接访问该地址的页面不同,想要拿到的数据没有加载出来,所以,想要的信息不在这个http://125.35.6.84:81/xk/地址#方式二、直接在浏览器上判断在浏览器上访问http://125.35.6.84:81/xk/,通过抓包工具,找到地址为http://125.35.6.84:81/xk/的数据包(Network中),找到Response对象,看是否有想要找的数据,可以通过ctrl+f快速查找

 

转载于:https://www.cnblogs.com/pdun/p/10931958.html

你可能感兴趣的文章
Pyqt5 获取命令行参数sys.argv
查看>>
virtaulbox视图模式常用切换
查看>>
尹中立:“人造牛市”的结局可能会非常悲惨
查看>>
堆C数组实现
查看>>
设计模式
查看>>
[CareerCup] 1.4 Replace Spaces 替换空格
查看>>
unix & linux oralce用户 内存使用情况分析
查看>>
linux笔记本上安装了双显卡驱动(intel+nvidia)
查看>>
怎么样MyEclipse配置Tomcat?
查看>>
法猿生存计划--左边的管理,技术正确
查看>>
使用eclipse搭建嵌入式开发环境
查看>>
为ListView组件加上快速滑块以及修改快速滑块图像
查看>>
H-index因素
查看>>
操作和维护经常使用的命令
查看>>
python获取实时股票信息
查看>>
[CareerCup] 6.4 Blue Eyes People on Island 岛上的蓝眼人
查看>>
白话JAVA守护线程
查看>>
APP抓链接工具(Fiddler版)
查看>>
Java对象表示方式2:XStream实现对对象的XML化
查看>>
arm-linux-gcc/ld/objcopy/objdump参数总结【转】
查看>>