Python基础

基础教程参考廖雪峰的官方网站https://www.liaoxuefeng.com/

一、"大数据时代",数据获取的方式

1. 企业生产的用户数据:大型互联网公司有海量用户,所以他们积累数据有天然的优势。
有数据意识的中小型企业,也开始积累的数据。

2. 数据管理咨询公司:通常这样的公司有很庞大的数据采集团队,一般会通过市场调研、问卷调查、固定的样本检测,
和各行各业的公司进行合作、专家对话(数据积累很多年了,最后得出科研结果)来采集数据。

3. 政府/机构提供的公开数据:政府通过各地政府统计上报的数据进行合并;机构都是权威的第三方网站。

4. 第三方数据平台购买数据:通过各个数据交易平台来购买各行各业需要的数据,根据获取难度不同,价格也会不同。

5. 爬虫爬取数据:如果市场上没有我们需要的数据,或者价格太高不愿意买,那么就可以招/做一个爬虫工程师,从互联网上定向采集数据。

二、什么是爬虫?

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

三、爬虫怎么抓取网页数据

网页三大特征

-1. 网页都有自己唯一的URL(统一资源定位符)来进行定位
-2. 网页都使用HTML (超文本标记语言)来描述页面信息。
-3. 网页都使用HTTP/HTTPS(超文本传输协议)协议来传输HTML数据。

爬虫的设计思路

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

四、为什么选择Python做爬虫?

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

- PHP 虽然是世界上最好的语言,但是他天生不是干这个的,而且对多线程、异步支持不够好,并发处理能力很弱。
爬虫是工具性程序,对速度和效率要求比较高。

- Java 的网络爬虫生态圈也很完善,是Python爬虫最大的对手。但是Java语言本身很笨重,代码量很大。
重构成本比较高,任何修改都会导致代码的大量变动。爬虫经常需要修改部分采集代码。

- C/C++ 运行效率和性能几乎最强,但是学习成本很高,代码成型比较慢。
能用C/C++做爬虫,只能说是能力的表现,但是不是正确的选择。

- Python 语法优美、代码简洁、开发效率高、支持的模块多,相关的HTTP请求模块和HTML解析模块非常丰富。
还有强大的爬虫Scrapy,以及成熟高效的 scrapy-redis分布式策略。
而且,调用其他借口也非常方便(胶水语言)

五、需要的技能

1. Python的基本语法知识(已经搞定)

-2. 如何抓取HTML页面:
HTTP请求的处理,urllib、urllib2、requests
处理后的请求可以模拟浏览器发送请求,获取服务器响应的文件

-3. 解析服务器响应的内容
re、xpath、BeautifulSoup4(bs4)、jsonpath、pyquery等
使用某种描述性一样来给我们需要提取的数据定义一个匹配规则,
符合这个规则的数据就会被匹配。

-4. 如何采集动态HTML、验证码的处理
通用的动态页面采集:Selenium + PhantomJS(无界面):模拟真实浏览器加载js、ajax等非静态页面数据
Tesseract:机器学习库,机器图像识别系统,可以处理简单的验证码,复杂的验证码可以通过手动输入/专门的打码平台

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

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

-7 爬虫 - 反爬虫 - 反反爬虫 之间的斗争:
其实爬虫做到最后,最头疼的不是复杂的页面,也是晦涩的数据,而是网站另一边的反爬虫人员。

User-Agent、代理、验证码、动态数据加载、加密数据。

数据价值,是否值的去费劲做反爬虫。

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

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

Python学习之路 (二)爬虫(一)的更多相关文章

  1. Python学习之路二

    今天主要学习了列表,python的列表真的事太强大了,由于内容比较多,今天就先简单的介绍一下新学的几个成员函数吧. 首先我们要了解list是一种序列类型,其构造方式有四种形式: (1)空列表 [] ( ...

  2. python学习之路 二 :基本数据类型

    本节重点 理解什么是变量? 掌握各种数据类型 理解可变类型和不可变类型 一.变量和常量 变量: 作用:存贮程序的中间结果在内存里,以备后边的程序调用 定义规范: 变量名只能是 字母.数字活下划线的任意 ...

  3. python学习之路二(字符串,字典,序列和元组)

    # -*- coding: utf-8 -* ''' Created on 2013-7-26 @author: lixingle ''' #!/usr/bin/python import math# ...

  4. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  5. python学习之路------你想要的都在这里了

    python学习之路------你想要的都在这里了 (根据自己的学习进度后期不断更新哟!!!) 一.python基础 1.python基础--python基本知识.七大数据类型等 2.python基础 ...

  6. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  7. Python学习之路-Day1-Python基础

    学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...

  8. Python学习之路-Day2-Python基础3

    Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...

  9. Python学习之路-Day2-Python基础2

    Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...

  10. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

随机推荐

  1. The request sent by the client was syntactically incorrect.

    HTTP Status 400 - type Status report message description The request sent by the client was syntacti ...

  2. 基于JSP的RSS阅读器的设计与实现

    阅读器访问地址:http://easyrss.tk/,欢迎体验! 阅读导览 一.    概述  二.    设计的基本概念和原理 三.    设计方案 四.    主要源代码 五.    阅读器使用说 ...

  3. before(),after(),prepend(),append()等新DOM方法简介

    一.DOM API也在不断升级 web前端标准一直在不断升级,比方说,说了很多年的HTML5.CSS3,以及天天见的ES6. 然后,似乎就没有然后了.实际上,除了HTML5/CSS3/ES6+,关于D ...

  4. Yii 之widget

    默认情况下, widget 的视图文件位于包含了widget文件的 views 子目录之下.这些视图可以通过调用 CWidget::render()渲染,这一点和控制器很相似.唯一不同的是,widge ...

  5. nodejs做的一个测试端口程序

    最近在学习nodejs的http,然后做了一个测试域名有没有使用那些端口,原意是用来做一个本地的静态服务器,然后运行前先测试端口,首先要用到的是net模块,主要用到的是Socket,判断其连接状态即可 ...

  6. Web 开发者学习路线图

      2017 Web 开发者学习路线图(头图源自谷歌) 本文是源自 Github 上 Kamran Ahmed 建立的一个仓库.在文中,作者为他的老教授分享了一组成为前端与后端开发者以及 Devops ...

  7. html打造动画【系列2】- 可爱的蛙蛙表情

    先感受一下全部表情包: 在开始之前先安利一个知识点:Flex弹性布局 我们一般做水平三列布局都是用的float方法,将每一块浮动显示在同一行.这种方法会导致元素没有原来的高度属性,要用清除浮动来解决空 ...

  8. Vue 框架-10-搭建脚手架 CLI

    Vue 框架-10-搭建脚手架 CLI + 批处理快捷启动 脚手架是通过 webpack 搭建的开发环境 使用 ES6 语法 打包和压缩 JS 为一个文件 项目文件在环境中,而不是浏览器 实现页面自动 ...

  9. Java 8方法引用使用指南

    [编者按]本文作者为拥有15年 Java 开发经验的资深程序员 Per-Åke Minborg,主要介绍如何灵活地解析 Java 中的方法引用.文章系国内 ITOM 管理平台 OneAPM 编译呈现. ...

  10. mongodb存储引擎

    存储引擎(Storage Engine)是MongoDB的核心组件,负责管理数据如何存储在硬盘(Disk)和内存(Memory)上.从MongoDB 3.2 版本开始,MongoDB 支持多数据存储引 ...