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

重点在这里

为什么使用爬虫

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

什么是爬虫

百度百科网络爬虫

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

爬虫怎么抓取网页数据?

网页三大特征

  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. 【题解】洛谷P4391 [BOI2009] Radio Transmission(KMP)

    洛谷P4391:https://www.luogu.org/problemnew/show/P4391 思路 对于给定的字符串 运用KMP思想 设P[x]为前x个字符前缀和后缀相同的最长长度 则对于题 ...

  2. iOS 杂笔-26(苹果禁用热更新)

    iOS 杂笔-26(苹果禁用热更新) 苹果爸爸禁用热更新小伙伴们有什么想说的吗? 苹果爸爸禁用热更新小伙伴们有什么想说的吗? 苹果爸爸禁用热更新小伙伴们有什么想说的吗?

  3. 洛谷P4525 【模板】自适应辛普森法1(simpson积分)

    题目描述 计算积分 结果保留至小数点后6位. 数据保证计算过程中分母不为0且积分能够收敛. 输入输出格式 输入格式: 一行,包含6个实数a,b,c,d,L,R 输出格式: 一行,积分值,保留至小数点后 ...

  4. Oracle之单表查询及常用函数

    1.语法: select 字段列表 from 表名 [where 查询条件] [group by 分组] [having 分组条件] [order by 排序] select * 代表查询所有的字段 ...

  5. inotify和epoll

    参考EventHub.cpp 1.初始化inotify int mINotifyFd = inotify_init(); 2.将要监测的目录添加到inotify int result = inotif ...

  6. python3 练习题100例 (六)

    题目六:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.……. #!/usr/bin/env python3 ...

  7. Scala学习笔记(三)—— 方法和函数

    1. 方法 方法使用 def 定义: def 方法名(参数名:参数列表,…) :返回值类型 = { 方法结构体 } scala> def add(x : Int ,y : Int):Int = ...

  8. ggplot2画简单的heatmap

    gg_heatmap gg_heatmap PeRl ggplot2 heatmap 偶然的机会,发现ggplot2画的heatmap也挺好看的,除了不能画出聚类树来(手动滑稽). 随意新建了两个矩阵 ...

  9. CSS-cascading stle sheets

    CSS-cascading stle sheets 1.      CSS 什么是CSS?CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式 ...

  10. SQL条件判断中字符串后面有空格的问题

    也不知何时才有的概念,还是以前一直没有注意,从哪也没有听说过的定义,今天又遇见了一个小坑,特记录下来,防止再陷坑! 才疏学浅,文笔有限,简单点说吧,就是在写SQL Server语句时,以前使用了 WH ...