爬虫入门(一):http协议、fiddler 4、urllib

本文介绍了爬虫的基本概念,包括通用爬虫和聚焦爬虫的工作原理,以及如何利用Python的urllib库进行网页抓取。此外,还探讨了HTTP协议,包括HTTPS的区别,以及Fiddler在网络抓包中的作用。
摘要由CSDN通过智能技术生成
1、爬虫概念
什么是爬虫?
程序猿:写程序,然后去互联网上抓取数据的过程
互联网:网,有好多的a链接组成的,网的节点就是每一个a链接   url(统一资源定位符)
哪些语言可以实现爬虫?
(1)php,可以做,号称世界上最优美的语言,多进程、多线程支持的不好
(2)java,也可以做爬虫,人家做的很好,最主要的竞争对手,代码臃肿,重构成本大
(3)c、c++,是你能力的体现,不是良好的选择
(4)python,世界上最美丽的语言,语法简单、代码优美,学习成本低,支持的模块多,非常强大的框架  scrapy
通用爬虫、聚焦爬虫
通用爬虫:百度、360、搜狐、谷歌、必应。。。
原理:
(1)抓取网页
(2)采集数据
(3)数据处理
(4)提供检索服务
爬虫:baiduspider
通用爬虫如何抓取新网站?
(1)主动提交url
(2)设置友情链接
(3)百度会和DNS服务商合作,抓取新网站
检索排名
竞价排名
根据pagerank值、访问量、点击量(SEO)
robots.txt
如果不想让百度爬取,可以编写robots.txt,这个协议是口头上的协议
自己写的爬虫程序不需要遵从
聚焦爬虫
根据特定的需求,抓取指定的数据
思路?
代替浏览器上网
网页的特点:
(1)网页都有自己唯一的url
(2)网页内容都是html结构的
(3)使用的都是http、https协议
爬取步骤
(1)给一个url
(2)写程序,模拟浏览器访问url
(3)解析内容,提取数据
环境:
windows环境、linux环境
Python3.6   64位的
sublime  pycharm
课程内容:
(1)使用到的库
urllib\requests\bs4 ....
(2)解析网页内容的知识
正则表达式、bs4、xpath、jsonpath
(3)涉及到动态html
selenium+phantomjs、chromeheadless
(4)scrapy框架
高性能框架使用
(5)scrapy-redis组件
redis,分布式爬虫
(6)涉及到爬虫-反爬虫-反反爬虫的一些内容
UA、代理、验证码、动态页面等
2、http协议
什么是协议?双方规定的传输形式
http协议:网站原理
应用层的协议  ftp(21)
http(80)\https(443)   ssh(22)  mysql(3306)  redis(6379)
mongo(27017)
https://www.cnblogs.com/wqhwe/p/5407468.html
HTTPS和HTTP的区别主要如下:
  1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
公钥、私钥
加密:密钥   解密:密钥   
对称加解密
非对称加解密
服务端:公钥、私钥
http协议详解(图解http协议)
https://www.cnblogs.com/10158wsj/p/6762848.html
http请求
包含:请求行、请求头、请求内容
请求行:
get、post,以及区别
常见请求头:
accept:浏览器通过这个头告诉服务器,它所支持的数据类型
  Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
  Accept-Encoding:浏览器通过这个头告诉服务器,支持的压缩格式
  Accept-Language:浏览器通过这个头告诉服务器,它的语言环境
  Host:浏览器通过这个头告诉服务器,想访问哪台主机
  If-Modified-Since: 浏览器通过这个头告诉服务器,缓存数据的时间
  Referer:浏览器通过这个头告诉服务器,客户机是哪个页面来的  防盗链
  Connection:浏览器通过这个头告诉服务器,请求完后是断开链接还是何持链接
X-Requested-With: XMLHttpRequest  代表通过ajax方式进行访问
http响应头部信息
Location: 服务器通过这个头,来告诉浏览器跳到哪里
  Server:服务器通过这个头,告诉浏览器服务器的型号
  Content-Encoding:服务器通过这个头,告诉浏览器,数据的压缩格式
  Content-Length: 服务器通过这个头,告诉浏览器回送数据的长度
  Content-Language: 服务器通过这个头,告诉浏览器语言环境
  Content-Type:服务器通过这个头,告诉浏览器回送数据的类型
  Refresh:服务器通过这个头,告诉浏览器定时刷新
  Content-Disposition: 服务器通过这个头,告诉浏览器以下载方式打数据
  Transfer-Encoding:服务器通过这个头,告诉浏览器数据是以分块方式回送的
  Expires: -1  控制浏览器不要缓存
  Cache-Control: no-cache  
  Pragma: no-cache
3、fiddler
4、urllib
urllib.request
urlopen
urlretrieve
urllib.parse
response
read()
geturl()
getheaders()
getcode()
readlines()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值