原本的想法是这样的:博客整理知识学习的同时,也记录点心情...集中式学习就没这么多好记录的了! 要学习一门技术,首先要简单认识一下爬虫!其实可以参考爬虫第一章! 整体上介绍该技术包含技能,具体能做什么.这里就更详细了

重点在这里

为什么使用爬虫

首先请问: 都说现在是大数据时代. ,那数据从哪来?

什么是爬虫

百度百科网络爬虫

爬虫:就是抓取网页数据的程序。

爬虫怎么抓取网页数据?

网页三大特征

  1. 网页都有自己唯一的URL(统一资源定位符,俗称网址) 来进行定位
  2. 网页使用的都是HTML(超文本标记语言)来描述网页信息,展示形式统一!
  3. 网页都使用HTTP/HTTPS(超文本传输协议) 协议来传输HTML数据 , 数据传输协议统一!

爬虫的设计思路

  1. 首先确定需要爬取的URL地址
  2. 通过HTTP.HTTPs协议来获取对应的页面
  3. 提取HTML页面有用的数据:
    - 如果需要的数据,就保存起来
    - 如果是页面包含其他URL, 就继续执行第二步!

为什么选择Python

这里感觉是废话! 都会说:赚钱就学呗! 其实了解其他语言的特性也是一种资历!!! 都没接触过哪敢吹!

可以做爬虫的语言有很多,如 PHP、Java、C/C++、Python等等...

  • PHP 为做网站而生,而且对多线程、异步支持不够好,并发处理能力很弱。 爬虫是工具性程序,对速度和效率要求比较高。
  • Java 的网络爬虫生态圈也很完善,是Python爬虫最大的对手。但是Java语言本身很笨重,代码量很大,难度高。重构成本比较高,任何修改都会导致代码的大量变动。爬虫经常需要修改部分采集代码。
  • C/C++ 运行效率和性能几乎最强,但是学习成本很高,代码成型比较慢。 能用C/C++做爬虫,只能说是能力的表现,但是不是正确的选择。
    • Python 语法优美、代码简洁、开发效率高、支持的模块多,相关的HTTP请求模块和HTML解析模块非常丰富。 还有强大的爬虫Scrapy,以及成熟高效的 scrapy-redis分布式策略。 而且,调用其他接口也非常方便(胶水语言)

关于爬虫需要掌握什么?

  1. 基础语法(这个必须已经搞定)
  2. 如何抓取HTML页面:
    • HTTP 请求处理, urllib, urllib2, requests
    • 处理后的请求可以模拟浏览器发送请求,后去服务器响应的文件
  3. 数据提取
    • 解析服务器响应的内容, re,xpath,BeautifulSoup4(bs4),jsonpath,puquery等
    • 使用某个匹配规则提取数据,符合这个规则的数据就会被匹配!
  4. 如何采集动态HTML,验证码的处理
    • 通用的动态页面采集: Selenium + PhantoJS(无界面) : 模拟真实浏览器加载js,ajax等非静态页面数据
    • Tesseract :机器学习库,机器图像识别系统,可以处理简单的验证码,复杂的验证码可以通过手动输入/专门的打码平台

5.Scrapy框架(Scrapy,Pysplider)
高定制性高性能(异步网络框架twisted),所以数据下载速度非常快, 提供了数据存储、数据下载、提取规则等组件。

  1. 分布式策略scrapy-reids
    scrapy-redis,在Scrapy的基础上添加了一套以 Redis 数据库为核心的组件。让Scrapy框架支持分布式的功能,主要在Redis里做 请求指纹去重、请求分配、数据临时存储。

  2. 爬虫- 反爬虫- 反反爬虫 之间的斗争:
    • 其实爬虫做到最后,最头疼的不是复杂的页面,也是晦涩的数据,而是网站另一边的反爬虫人员。
    • User-Agent、代理、验证码、动态数据加载、加密数据。
    • 数据价值,是否值的去费劲做反爬虫。

      1. 机器成本 + 人力成本 > 数据价值,就不反了,一般做到封IP就结束了。
      2. 面子的战争....

    爬虫和反爬虫之间的斗争,最后一定是爬虫获胜!为什么?只要是真实用户可以浏览的网页数据,爬虫就一定能爬下来!

最新文章

  1. IOCP Internals
  2. Heartbeat使用梳理
  3. Azure China (6) SAP 应用在华登陆 Windows Azure 公有云
  4. Android WebView Demo
  5. ServletContentLIstener接口演示ServletContext的启动和初始化
  6. SQL Server 2012 performance dashboard 安装
  7. Javascript中的函数
  8. 2001: [Hnoi2010]City 城市建设 - BZOJ
  9. SpringMVC(一)
  10. C# Attribute (上)——Attribute初体验
  11. C语言-01基础语法
  12. F - Power Network - poj 1459(简单最大流)
  13. REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解
  14. codeforces 617E. XOR and Favorite Number 莫队
  15. HDU - 1588 Gauss Fibonacci (矩阵高速幂+二分求等比数列和)
  16. linux_redhat_线程后台运行方法
  17. flex与后台及页面间对象的传递
  18. 【设计模式】单一职责原则(SRP)
  19. 【python-HTMLTestRunner】HTMLTestRunner测试报告中文乱码问题解决
  20. STA分析(一) setup and hold

热门文章

  1. 下载安装Redis+使用
  2. DU1525 Euclid's Game 博弈
  3. iOS11.2-11.3.1进行越狱及问题
  4. iOS 文件下载及断点续传
  5. 确认框,confirm工具封装
  6. thinkphp 利用GD库在图片上写文字
  7. pastedeploy
  8. 写shell脚本需要注意哪些地方----零基础必看
  9. Angular.js-2入门
  10. MFC非模态添加进程控件方法一(线程方法)