Robots 协议也称作爬虫协议、机器人协议,它的全名叫作网络爬虫排除标准( Robots ExclusionProtocol),用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取。它通常是一个叫作 robots.txt的文本文件,一般放在网站的根目录下 。

2. robotparser

set_url:用来设置 robots.txt 文件的链接。 如果在创建 RobotFileParser 对象时传入了链接,那么就不需要再使用这个方法设置了

read:读取 robots.txt 文件并进行分析。 注意,这个方法执行一个读取和分析操作,如果不 调用这个方法 , 接下来的判断都会为 False,所以一定记得调用这个方法。 这个方法不会返回任何内容,但是执行了读取操作 。

parse:用来解析robots.txt文件,传人的参数是robots.txt某些行的内容,它会按照robots.txt的语法规则来分析这些内容 。

can_fetch:该方法传人两个参数 , 第一个是 User-agent,第二个是要抓取的 URL。 返回的 内容是该搜索引擎是否可以抓取这个 URL,返回结果是 True 或 Falsea

mtime:返回的是上次抓取和分析 robots.txt的时间,这对于长时间分析和抓取的搜索爬虫是 很有必要的,你可能需要定期检查来抓取最新的 robots.txt。

modified:

1 from urllib.robotparser importRobotFileParser2

3 rp =RobotFileParser()4 rp.set_url('http://www.jianshu.com/robots.txt')5 rp.read()6 print(rp.can_fetch('*', 'http://www.jianshu.com/p/b67554025d7d'))7 print(rp.can_fetch('*', 'http://www.jianshu.com/search?q=python&page=l&type=collections'))

8. requests

它同样对长时间分析和抓取 的搜索爬虫很有帮助,将 当前时间设置为上次抓取和分析 robots.txt 的时间 。

1. get:

1 importrequests2 importre3

4 #浏览器标时,如果没有,会禁止爬取

5 headers ={6 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'

7 }8 r = requests.get("http://www.zhihu.com/explore",headers=headers)9 pattern = re.compile('explore-feed.*?question.*?>(.*?)',re.S)10 titles =re.findall(pattern, r.text)11 print(titles)12

13 r = requests.get("http://github.com/favicon.ico")14 with open('favicon.ico','wb') as f:15 f.write(r.content)

2. post:

1 importrequests2

3 data ={4 'name': 'name',5 'age': '22'

6 }7 r = requests.post("http://httpbin.org/post", data=data)8 print(r.text)9 r = requests.get('http://www.zhihu.com')10 print(type(r.status_code), r.status_code)#得到状态码

11 print(type(r.headers), r.headers)#得到响应头

12 print(type(r.cookies), r.cookies)#得到cookies

13 print(type(r.url), r.url)#得到URL

14 print(type(r.history), r.history)#得到请求历史

9. request的高级语法:

1.文件上传:

2. cookies:

1 importrequests2

3 files = {'file':open('favicon.ico', 'rb')}4 r = requests.post("http://httpbin.org/post", files=files)5 print(r.text)6 r = requests.get("http://www.baidu.com")7 print(r.cookies)8 for key, value inr.cookies.items():9 print(key + '=' +value)10

11 headers ={12 'Cookies': 'tst=r; __utma=51854390.2112264675.1539419567.1539419567.1539433913.2; __utmb=51854390.0.10.1539433913; __utmc=51854390; __utmv=51854390.100--|2=registration_date=20160218=1^3=entry_date=20160218=1; __utmz=51854390.1539433913.2.2.utmcsr=zhihu.com|utmccn=(referral)|utmcmd=referral|utmcct=/; tgw_l7_route=e0a07617c1a38385364125951b19eef8; q_c1=d3c7341e344d460ead79171d4fd56f6f|1539419563000|1516290905000; _xsrf=713s0UsLfr6m5Weplwb4offGhSqnugCy; z_c0="2|1:0|10:1533128251|4:z_c0|92:Mi4xS2VDaEFnQUFBQUFBZ09DVGo1ZUtEU1lBQUFCZ0FsVk5PX3hPWEFEVXNtMXhSbmhjbG5NSjlHQU9naEpLbkwxYlpB|e71c25127cfb23241089a277f5d7c909165085f901f9d58cf93c5d7ec7420217"; d_c0="AIDgk4-Xig2PTlryga7LwT30h_-3DUHnGbc=|1525419053"; __DAYU_PP=zYA2JUmBnVe2bBjq7qav2ac8d8025bbd; _zap=d299f20c-20cc-4202-a007-5dd6863ccce9',13 'Host': 'www.zhihu.com',14 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',15

16 }17 r = requests.get("http://www.zhihu.com",headers=headers)18 print(r.text)

3. 会话维持:

1 importrequests2

3 requests.get("http://httpbin.org/cookies/set/umber/123456789")4 r = requests.get("http://httpbin.org/cookies")5 print(r.text)6 s =requests.Session()7 s.get("http://httpbin.org/cookies/set/umber/123456789")8 r = s.get('http://httpbin.org/cookies')9 print(r.text)

1 {2 "cookies": {}3 }4

5 {6 "cookies": {7 "umber": "123456789"

8 }9 }10

11

12 Process finished with exit code 0

4. SSl证书验证

requests还提供了证书验证的功能。 当发送 HTTP请求的时候,它会检查 SSL证书,我们可以使用 verify参数控制是否检查此证书。 其实如果不加 verify参数的话,默认是 True,会自动验证。

python3网络开发实战_《python3网络爬虫开发实战》--基本库的使用相关推荐

  1. python爬虫开发与项目实战pdf下载_python爬虫开发与项目实战PDF高清文档下载

    随着大数据时代到来,网络信息量也变得更多更大,基于传统搜索引擎的局限性,网络爬虫应运而生,本书从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言和Web前端基础知识引领读者入门,之后介绍动态爬虫原 ...

  2. python爬虫从基础到实战-2019-08-05 《python爬虫开发:从入门到实战》

    1.正则表达式 学习了简单的正则表达式使用.通过这个书发现,实际爬虫过程中,用正则表达式去匹配内容,并不是非常常用. xpath更好用一点. 2.简单网页爬虫开发 2.1 用python获取网页源码 ...

  3. cnpm 网络不能连接_移动站网络的另一种方式——移动站手机网络模式

    现在用CORS网络越来越多,特别是现在2000坐标推广使用以来,用网络CORS的方便性就越来越直观了. 用网络卡接收数据当然是要有网络信号,但是很多客户的仪器网络模块制式还是老的模块,只支持移动2G网 ...

  4. 网络日志管理_企业网络日志对具体对网络安全维护有哪些帮助?

    网络日志管理对企业网络健康发展非常重要,众所周知,日志是判定企业网络中各类用户行为的重要依据,其不仅能排查出各类网络漏洞,还对企业网络合规性审计有很大帮助.因此网络日志的采集.分析.归档.留存成为目前 ...

  5. python前端开发招聘_【天津前端开发招聘_最新天津前端开发招聘信息】-前程无忧...

    天津卓众信息技术有限公司天津-西青区0.6-1万/月11-23 学历要求:本科|工作经验:3-4年|公司性质:民营公司|公司规模:少于50人 1.根据产品设计实现产品的页面交互和数据逻辑展示,负责前端 ...

  6. python游戏开发引擎_你的游戏开发第0课

    电子游戏是许多人喜爱甚至沉迷的事情.尤其对于程序员来说,开发游戏是不少人最初学习编程的动力.在之前,我发过一些游戏开发的教程和案例: 爆款游戏<贪吃蛇大作战>的 Python 实现 如何用 ...

  7. 重庆找Java开发工作_重庆【Java开发程序员】

    重庆[Java开发程序员],提倡一切为了学员就业的办学思想,教学过程中坚持以练习企业项目为主,让学员真正能学到技术,毕业就能适应工作岗位. 重庆[Java开发程序员], Java 编程开发.而且很多软 ...

  8. web开发指南_成为专业Web开发人员的实用指南

    web开发指南 This article is meant to serve as a practical guide to becoming a professional web developer ...

  9. 哈尔滨java开发工资_给哈尔滨Java开发初学者的几个学习建议

    对于初学者应该如何学习Java开发技术,纵观中国目前整体行业来说,互联网IT行业成为了拔尖的行业,IT互联网程序开发成了靠自己能力可以多挣一点钱,所以各个行业都在转行,其实互联网不存在饱和,只不过大多 ...

  10. python 物联网开发板_物联网学什么开发板好?

    可以试试我们的三明治开发板呀!比较容易上手,你可以使用它轻松创建一款通过智能音箱语音或者手机App控制的智能硬件产品,喜欢玩DIY的知友可以体验下. 配合我们的IoT开发平台,即可快速完成智能产品de ...

最新文章

  1. html实现以秒为单位倒数,跳转新的页面
  2. 从IoT World 2019看全球IoT九大发展趋势
  3. 为了提升续航,马斯克又引发一场“造芯”革命,华为比亚迪已进场
  4. [转]Git远程操作详解
  5. Objective-C Runtime
  6. c语言常用的异常处理,C语言中的异常处理
  7. unity3d曲线text文本
  8. SpringCloud Gateway 服务网关,断言
  9. 李彦宏发布人生第一条Vlog,发力视频从自己做起
  10. 因讨要介绍费引发纠纷 浙江龙湾一男子砍死房产中介
  11. VS2010快捷键设置
  12. html设置图片为部分背景颜色,设置HTML的一个部分作为一个不同的背景颜色
  13. JavaCV:将任意视频转码为h264编码的mp4格式视频
  14. 外部Alpha图像怎么通过ZBrush进行导入
  15. Java学习---day07_继承及final、Object的介绍
  16. Matlab龚珀兹曲线模型预测,统计预测方法及预测模型介绍.ppt
  17. PG数据库查看数据大小参考
  18. 极值分布的类型及性质-----极值理论的学习1
  19. 计算机网络centos下实验1.1(Linux常用命令+Linux网络基础)
  20. 抖音赚钱记,新手如何玩转抖音,每天赚300起(连载五)

热门文章

  1. 常用shell脚本集合
  2. 第三天 本来是吃吃玩玩愉快的一天, Airpods耳机充电仓丢了 ,淦 ➡_➡!但学习还得继续!!
  3. 如何将matlab代码转为C语言(2)--在C++中调用matlab的函数
  4. 高质量社群运营三大技巧,教你如何做好社群活跃度
  5. Linux中级(六)Proxy服务器
  6. mysql u g_运行dev时出错_应用服务器.py在gcloud“ImportError:没有名为MySQLdb.\u mysql”的模块?...
  7. 图像的常规边缘检测(梯度算子、Roberts算子和Sobel算子)之c++实现(qt + 不调包)
  8. yolov5s 预训练模型_GitHub上YOLOv5开源代码的训练数据定义
  9. win10系统自带查询电池健康命令
  10. 思维模型 阿伦森效应