python爬虫系列(一):爬虫简介
一 什么是爬虫
爬虫:就是抓取网页数据的程序。
二、爬虫怎么抓取网页数据:
网页三大特征:
-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里做 请求指纹去重、请求分配、数据临时存储。
(决定做一套爬虫的系列,每天更新!谢谢支持。)
python爬虫系列(一):爬虫简介相关推荐
- python全系列之爬虫scrapy_python爬虫scrapy之登录知乎
下面我们看看用scrapy模拟登录的基本写法: 注意:我们经常调试代码的时候基本都用chrome浏览器,但是我就因为用了谷歌浏览器(它总是登录的时候不提示我用验证码,误导我以为登录时不需要验证码,其实 ...
- 【python爬虫系列】爬虫+Selenium
文章目录 Python下Selenium安装及环境配置 Python Selenium库的使用 基础知识 Selenium 快速入门 python爬取百度 python爬取拉勾招聘 selenium. ...
- 快速入门网络爬虫系列 Chapter16 | 爬虫性能提升
Chapter16 | 爬虫性能提升 一.基础简介 1.任务调度 2.线程与进程 2.1.进程 2.2.线程 2.3.线程与进程的联系 2.4.线程与进程的区别 3.多线程 3.1.多线程的原理 3. ...
- Java爬虫系列(五) - 爬虫补充内容+ElasticSearch展示数据
Java爬虫内容补充和ElasticSearch 网页去重 之前我们对下载的url地址进行了去重操作,避免同样的url下载多次.其实不光url需要去重,我们对下载的内容也需要去重. 在网上我们可以找到 ...
- 爬虫系列:穿越网页表单与登录窗口进行采集
上一期我们讲解了数据标准化相关内容,首先对单词出现的频率进行排序,之后对一些大小写进行转换,缩小 2-gram 序列的重复内容. 当我们真正迈出网络数据采集基础之门的时候,遇到的第一个问题可能是:&q ...
- python 全栈开发,Day136(爬虫系列之第3章-Selenium模块)
python 全栈开发,Day136(爬虫系列之第3章-Selenium模块) 一.Selenium 简介 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直 ...
- python爬虫常见报错_Python爬虫系列之什么是爬虫
时间过的总是那么快,特别是对于一个有拖延症的人来说,例如我...早就想出一个关于爬虫的系列教程,但总是被自己的拖延症和一系列的杂碎事情打断.最近终于将自己的所有事情以及自己最真实的想法捋顺了,所以决定 ...
- python爬虫系列之下载在线文档Excel(腾讯)
python爬虫系列之腾讯文档Excel数据 一.简介 二.实现步骤 1. 数据准备 2. 获取当前用户nowUserIndex 3.创建导出任务 4. 检查数据准备进度,并下载 三.完整代码 四.效 ...
- 「Python爬虫系列讲解」八、Selenium 技术
本专栏是以杨秀璋老师爬虫著作<Python网络数据爬取及分析「从入门到精通」>为主线.个人学习理解为主要内容,以学习笔记形式编写的. 本专栏不光是自己的一个学习分享,也希望能给您普及一些关 ...
- python 全栈开发,Day137(爬虫系列之第4章-scrapy框架)
python 全栈开发,Day137(爬虫系列之第4章-scrapy框架) 一.scrapy框架简介 1. 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所 ...
最新文章
- Spring Cloud【Finchley】- 21 Spring Cloud Stream 构建消息驱动微服务
- Ubuntu下使用WebStorm开发nodejs(一)
- MySQL中的show full columns from 表名
- jQuery事件4——hover
- linux docker漏洞,安装shadow或linux-pam的Alpine Linux Docker镜像有漏洞,附解决
- python3 类的相关内容
- in use 大学英语4word_(word)大学英语考试样题四.doc
- 网站推广中增加外链的八个技巧
- java final 内存语义_final 域的内存语义
- mysql queries 很大,mysql优化通常使用的几种方法
- dws中间表模型设计: 页面受访明细宽表
- 图像识别没你想的那么难!看完这篇你也能成专家
- Intel VT-d(1)- 简介
- Cocos2dx 3.2 横版过关游戏Brave学习笔记(一)
- Spark教程——(10)Spark SQL读取Phoenix数据本地执行计算
- JS判断输入的字符串是否是数字(正则表达式)
- 最简短的找工作经历:没有和任何人交谈,他就进入了亚马逊
- 本人对2023年网络安全演练规划要求
- python工作流引擎_工作流,活动图和Python协程(一)
- 补充远程桌面数字证书读取问题