当前位置:网站首页>【1数据采集】数据爬虫的完整学习路径
【1数据采集】数据爬虫的完整学习路径
2022-06-09 09:11:00 【Ofter数据科学】
必读:数据道德与法规
无论出于什么目的,需要采用数据爬虫或类似的技术,请务必首先阅读和严格遵守《中华人民共和国数据安全法》以及相关的法律法规。另外,法规中的未尽之处,也请出于社会道德风尚,谨慎行事,切不可利用潜在漏洞和技术手段,影响组织或个人的正常工作和生活。

1、爬虫的基础知识

1.1 什么是爬虫
一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。
1.2 爬虫架构
主要由五个部分组成:爬虫调度器、URL管理器、网页下载器、网页解析器、数据存储器(应用程序)。

1.3 python十大常用爬虫框架
- scrapy:提取结构性数据而编写的应用框架。
- PySpider:带有强大的WebUI,能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储,还能定时设置任务与任务优先级等。
- Crawley:可以高速爬取对应网站的内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。
- Portia:不需要任何编程知识的情况下爬取网站,简单地注释您感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。
- Newspaper:可以用来提取新闻、文章和内容分析。使用多线程,支持10多种语言等。
- Beautiful Soup:可以从HTML或XML文件中提取数据,获取html元素的常用库。
- Grab:可以处理数百万个网页的复杂异步网站抓取工具。
- Cola:分布式的爬虫框架,对于用户来说,只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。
- Selenium:自动化测试工具,支持多种语言开发,比如 Java,C,Ruby,python等等。
- Python-goose:可提取的信息包括:文章主体内容、主要图片、文章中嵌入的任何Youtube/Vimeo视频、元描述、元标签。
2、爬虫进阶之路
数据爬虫从技术的复杂性来看,可以粗略分为3个阶段:入门、中级、高级。
2.1 入门
1)网络基础:tcp/ip协议、socket网络编程、http协议;
2)web前端:HTML, CSS, JavaScript, DOM, Ajax, jQuery, json 等;
3)正则表达式:能使用正则表达式提取网页中的信息;
4)HTML解析:beautifulsoup,xpath和css选择器;
5)HTML下载:urllib, requests进行简单的数据抓取;
6)其他常识:python等编程语言语法,数据库知识。
2.2 中级
1)模拟登录:会使用MD5,Hash等加解密算法,设置代理user-agent和Nginx协议,模拟post/get请求,抓取客户端cookie或session登录;
2)验证码识别:包括最基本的验证码识别,比如ocr识别,对于复杂的验证码需要会调用第三方服务;
3)动态网页分析:使用selenium+phantomjs/chromedriver抓取一些动态网页信息;
4)多线程和并发:线程间通信和同步,以及通过并行下载加速数据爬取;
5)ajax请求数据:使用抓包工具捕获ajax请求对应的数据包,从数据包中提取url和对应的请求参数,请求的发送(处理参数),获取json格式响应数据 response.json()。
2.3 高级
1)机器学习:使用机器学习应对一些反爬策略,避免被封禁;
2)数据存储:使用常用的数据库进行数据存储,查询,并通过缓存避免重复下载的问题;
3)分布式爬虫:使用一些开源框架如scrapy,scrapy-redis,部署分布式爬虫进行大规模数据爬取;
4)其他相关应用,如移动端数据的爬取,监控和运维爬虫......
3、爬虫的难点
数据爬虫最大的难点在于爬和反爬的博弈过程,当我们开发出一门爬取技术,就会有对应的反爬策略应运而生,然后再研究出新的爬取手段,周而复始。当然,对于正常的爬取,也会有比较复杂的过程存在:进程与线程、断点续爬、分布式、爬虫监控、异常通知。

边栏推荐
- Annexe 17 interprétation du programme réseau
- 面试官:如何秒开视频?什么是秒开视频?
- 【线性代数】线性无关与正交基和正交矩阵
- Android common principle interview questions (preliminary sorting)~
- C指针复习
- English grammar_ Adverb of place
- MySQL基础 DML与DDL学习
- Advanced web service (VIII) base64decoder
- 【Redis学习13】Redis搭建主从集群、哨兵集群、分片集群
- MySQL basic query statement
猜你喜欢
![[code comment] Doxygen](/img/db/0017e30ef8ff5d9d71a9d02a7ed7cf.png)
[code comment] Doxygen

Redhat7 cracking (resetting) root password

如今的Android 开发都怎么了?我问的面试题有这么难吗?

MySQL基础 数据库创建基础

【Redis学习13】Redis搭建主从集群、哨兵集群、分片集群

Anatomy of illusory rendering system (15) - XR topic

如何看待 Dapr、Layotto 这种多运行时架构?

Understand the graph database neo4j (II)

Omit 应用 减少 TS 重复代码

three.js学习笔记(十六)——汹涌的海洋
随机推荐
ERP 系统,编译和学习
判断是Json还是文件流
Understand the graph database neo4j (III)
three.js学习笔记(十五)——着色器图案
Acwing game 54
[Android -- interview] the top ten platforms where programmers have joined w every month
C language pointer
重走Flutter状态管理之Riverpod最终篇
Basic pointer ~ guide you to the introduction pointer
HAVE FUN | SOFAArk 源码解析活动
Postman 接口压力测试
Error deleting environment variable path
【Redis学习13】Redis搭建主从集群、哨兵集群、分片集群
Understand the graph database neo4j (II)
Neo4j realizes social recommendation (V)
Open application for "cloud native technology application and practice" demonstration course project in Colleges and Universities
Write InputStream to file write multipartfile to file
[texstudio] [1] fractional dfrac, tfrac undefined control square error
Attachment 17: limited articles on network program interpretation
初级指针~带你入门指针