python爬虫基础-01

个人的一些【爬虫】复习摘要,无实际参考价值,一方面回顾,另一方面准备面试。

  1. 基本的爬虫工作原理(基础TCP/IP知识)
  2. 基本的http抓取工具:request(简单)、Scrapy(自定义程度高)、PySpider(简单,web可视化)、selenium(动态加载)、Cola(分布式)
  3. Bloom Filter(判重)
  4. 如果需要大规模网页抓取,你需要学习分布式爬虫的概念。其实没那么玄乎,你只要学会怎样维护一个所有集群机器能够有效分享的分布式队列就好。最简单的实现是python-rq
  5. rq和Scrapy的结合 darkrho/scrapy-redis
  6. 后续处理,网页析取(grangier/python-goose · GitHub),代理池,存储(Mongodb)
  7. 数据分析

基础部分

网络请求

  • User-Agent : 有些服务器或 Proxy 会通过该值来判断是否是浏览器发出的请求
  • Content-Type : 在使用 REST 接口时,服务器会检查该值,用来确定 HTTP Body 中的内容该怎样解析。
  • application/xml : 在 XML RPC,如 RESTful/SOAP 调用时使用
  • application/json : 在 JSON RPC 调用时使用
  • application/x-www-form-urlencoded : 浏览器提交 Web 表单时使用
  • 在使用服务器提供的 RESTful 或 SOAP 服务时, Content-Type 设置错误会导致服务器拒绝服务

  • 另外,我们还有对付”反盗链”的方式,对付防盗链,服务器会识别headers中的referer是不是它自己,如果不是,有的服务器不会响应,所以我们还可以在headers中加入referer

爬虫代理

原理:伪装本机IP

  • 突破自身 IP 访问限制,访问一些平时不能访问的站点。
  • 访问一些单位或团体内部资源,如使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类 FTP 下载上传,以及各类资料查询共享等服务。
  • 提高访问速度,通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度。
  • 隐藏真实 IP,上网者也可以通过这种方法隐藏自己的 IP,免受攻击,对于爬虫来说,我们用代理就是为了隐藏自身 IP,防止自身的 IP 被封锁。

职位要求

来自今日头条

职位诱惑:
六险一金,弹性工作,免费三餐,租房补贴,带薪休假,休闲下午茶,健身瑜伽
职位描述:
职位职责:
1、负责构建垂直类爬虫架构,智能抓取系统设计与研发(如抓取调度,多样化抓取,页面解析和结构化抽取,海量数据存储和读取等);
2、负责研究提升爬虫抓取效率和质量(如调权调度、分析预测、质量判断、封禁与反封禁研究等);
3、负责研究和分析目标网站,探索和研究高效的数据抓取解决方案;
4、负责使用 OCR 工具识别图像数据(如验证码,加密后的图片数据)。

职位要求:
1、本科及以上学历,良好的代码能力,扎实的数据结构和算法功底,有快速迭代、逐步优化的工程项目经验;
2、有良好逻辑思维能力、沟通能力、团队合作精神、学习能力,抗压能力,对挑战性问题充满激情;
3、熟悉 linux 使用,熟悉 shell/perl/python 等脚本语言,熟练掌握正则表达式,XPATH 等常用数据提取方法;
4、有多线程、网络数据处理经验优先(如HTTP协议,AJAX,爬虫开发,浏览器内核开发,Web服务开发等);
5、有大规模分布式海量数据处理经验优先(如Hadoop/Hbase/Spark/Strom/Flink等)。

参考