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

重点在这里

为什么使用爬虫

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

什么是爬虫

百度百科网络爬虫

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

爬虫怎么抓取网页数据?

网页三大特征

  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. 面子的战争....

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

(Pyhton爬虫03)爬虫初识的更多相关文章

  1. 爬虫03 /代理、cookie处理、模拟登录、提升爬虫效率

    爬虫03 /代理.cookie处理.模拟登录.提升爬虫效率 目录 爬虫03 /代理.cookie处理.模拟登录.提升爬虫效率 1. 代理 2. cookie处理 3. 模拟登录 4. 如何提升爬取数据 ...

  2. Python 爬虫1——爬虫简述

    Python除了可以用来开发Python Web之后,其实还可以用来编写一些爬虫小工具,可能还有人不知道什么是爬虫的. 一.爬虫的定义: 爬虫——网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区 ...

  3. 【java爬虫】---爬虫+基于接口的网络爬虫

    爬虫+基于接口的网络爬虫 上一篇讲了[java爬虫]---爬虫+jsoup轻松爬博客,该方式有个很大的局限性,就是你通过jsoup爬虫只适合爬静态网页,所以只能爬当前页面的所有新闻.如果需要爬一个网站 ...

  4. [爬虫]Python爬虫基础

    一.什么是爬虫,爬虫能做什么 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.比如它在抓取一个网 ...

  5. python3爬虫--反爬虫应对机制

    python3爬虫--反爬虫应对机制 内容来源于: Python3网络爬虫开发实战: 网络爬虫教程(python2): 前言: 反爬虫更多是一种攻防战,针对网站的反爬虫处理来采取对应的应对机制,一般需 ...

  6. PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)

    说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览. 原文链接 PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二 ...

  7. Python 开发轻量级爬虫03

    Python 开发轻量级爬虫 (imooc总结03--简单的爬虫架构) 现在来看一下一个简单的爬虫架构. 要实现一个简单的爬虫,有哪些方面需要考虑呢? 首先需要一个爬虫调度端,来启动爬虫.停止爬虫.监 ...

  8. python爬虫框架scrapy初识(一)

    Scrapy介绍 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中.所谓网络爬虫,就是一个在网上到处或定向抓取数据的 ...

  9. python爬虫系列之初识爬虫

    前言 我们这里主要是利用requests模块和bs4模块进行简单的爬虫的讲解,让大家可以对爬虫有了初步的认识,我们通过爬几个简单网站,让大家循序渐进的掌握爬虫的基础知识,做网络爬虫还是需要基本的前端的 ...

随机推荐

  1. java使用jsp建立项目+视频

    项目下载:https://pan.baidu.com/s/1rfwrihd82zAmpt3r-mxIMw 视频+项目下载:https://pan.baidu.com/s/17Cm0wW-S9xiUy4 ...

  2. CSU - 1224 ACM小组的古怪象棋

    传送门: http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1224 1224: ACM小组的古怪象棋 Lime Limit: 1 Sec     ...

  3. hdu Hat's Fibonacci(用了kuangbin模板)

    大数的位数设置很坑,设成700会越界,设成800会超空间,最后设成了750居然就过了.... #include <iostream> #include <cstdio> #in ...

  4. TinyMCE插件:RESPONSIVE filemanager 9 文件名统一格式化

    上传图片方法(filemanager/UploadHandler.php) 在上传图片的函数中查看,发现$file->name是一个完整的[文件名.后缀名],所以使用explode(),文件名和 ...

  5. rem和em的用法

    1.rem转化为向素值的方法 rem单位转化为像素大小取决于根元素的字体大小,即HTML元素的字体大小,根元素字体大小乘以rem. 例:根元素的字体大小 16px,10rem 将等同于 160px,即 ...

  6. 通过session_id恢复session内容

    1.取得session_id // 开启session session_start(); // 取得 $_SESSION['test'] = '111222333'; $session_id = se ...

  7. 使用Wamp搭建Php本地开发环境,HBuilder调试

    初涉Php,此处做点笔记,希望下次不要能够轻松应对,至少不要在入同一个坑 本文摘要: wamp和HBuilder和Mysql5.7的安装包 Wamp的使用,包括80端口,443端口的占用问题 HBui ...

  8. laravel 安装添加多站点

    官方文档如下 https://learnku.com/laravel/t/1160/laravel-nginx-multi-site-configuration

  9. Invoice Helper

    using System; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Query; using Microsoft.Crm.Sdk.Messag ...

  10. STM32F407+STemwin学习笔记之STemwin移植补充Touch

    原文地址:http://www.cnblogs.com/NickQ/p/8857213.html 环境:keil5.20  STM32F407ZGT6  LCD(320*240)  STemwin:S ...