欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

什么是python爬虫?该如何学?微软架构师熬夜整理的这份python爬虫入门教程(非常详细)都讲到了......

时间:2023-05-22
什么是python爬虫?

很多人学习python编程语言之后,不知道爬虫是什么,相信大家对“爬虫”这个词并不陌生,在不了解爬虫的人群中,就会觉得这是个很高端神秘的技术。

如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,

 

沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;

从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用。

python爬虫原理

模拟用户在浏览器或者App应用上的操作,把操作的过程、实现自动化的程序,大致分为以下4个基本流程:

(1)发起请求

通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应。

(2)获取响应内容

如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型。

(3)解析内容

得到的内容可能是HTML,可以用正则表达式,页面解析库进行解析,可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。

(4)保存数据

保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件。

python爬虫能干什么?

现在爬虫可以做的事情非常多,数据、信息、电影、资料等,你技术过关了,爱咋爬咋爬,仔细观察,加上你如果认真观察,就会发现学习爬虫的人越来越多,一点是互联网对于信息数据的需求越来越多,第二点是Python这种强大又简单的编程语言容易学习,而且世界上80%的爬虫都是由它来完成的,简单、易上手是它的优势。

爬虫的入门选择Python最好的方法,因为Python有很多应用的方向,如后台开发、web开发、科学计算等等,但爬虫对于初学者而言更友好,原理简单,几行代码就能实现基本的爬虫,学习的过程更加平滑,你能体会更大的成就感。

掌握基本的爬虫后,你再去学习Python数据分析、web开发甚至机器学习,都会更得心应手。因为这个过程中,Python基本语法、库的使用,以及如何查找文档你都非常熟悉了。

如何学习python爬虫?

对于新手来说,爬虫也许是非常复杂、技术门槛很高的事情。比如有人认为学爬虫必须精通 Python,然后埋头苦干学习 Python 的每个知识点、狂敲各种代码,直到很久之后,发现仍然爬不了数据,又懊恼实在太难了;有的人则认为先要掌握网页的知识,遂开始学习HTMLCSS,结果走了歪路,并在这条路上越走越远直到头发掉光......

其实掌握正确的方法,在短时间内做到能够爬取主流网站的数据,其实非常容易实现,但建议你从一开始就要有一个具体的目标。

在这里给大家推荐的这本《python3网络爬虫开发实战》的作者是崔庆才,静觅博客的博主(https://cuiqingcai.com/)。

 

这本书涵盖的知识范围很广,比如基础的:

HTTP基本原理和网页的基本原理。建议大家如果以代码为生,至少多多少少都提前了解一点html。说不定实习的第一个任务就是制作某一个debug工具展示在网页上。

会话和cookies。实际上是网页端认证。如果需要爬取需要登录的页面(比如微博),这个知识是必须要掌握的。

正则表达式。正则表达式是各种编程语言之间通用的一套进行字符串匹配和处理的一套定式。当你需要在一个奇奇怪怪但又有点规律的字符串里提取出你想要的信息的时候,正则表达式是最有用的武器。

Python中的urllib和requests库。常见的与网页交互的方法都在这两个库中维护。

Python中的一些常见的解析库。因为HTML是一种特殊的字符串,所以我们可能不需要那么累构造正则表达式去匹配,用一些通用的解析库就可以把HTML解析出来更方便的拿到元素信息。其中名气比较大的库应该是BeautifulSoup

Python中的数据存储方式。比如你想把爬取下来的数据存储在哪里?txt, csv这样的文件里,当时MySQL数据库里,或者一些KV存储的架构比如MongoDB或者Redis?

本书都对上述这些基础的概念做了简单的介绍。还有各种爬虫场景和可能遇到的问题:

不需要登陆的页面爬取。(这个应该是最简单的爬虫项目了)Ajax数据爬取。现在越来越多的网页出于效率的考虑,都是Ajax异步加载数据,这样可以提高用户体验,但对爬虫来说需要额外处理一下。动态渲染页面爬取。有时候不能直接在网页源代码上看到真正的HTML,这些HTML可能是访问的时刻通过Javascript渲染的。不过这个时候就可以通过模拟浏览器登录来进行操作。最近帮理波特写的一个爬虫就是通过这种方式实现的。如何识别验证码。虽说验证码的出现就是为了防止爬虫抓取的,但当然也是有办法破解的。代理的使用。当我们需要大批量的高频率的爬取信息的时候,有时候会被一些有反爬虫机制的网站封掉IP,这时候我们就需要把我们伪装成一个新的IP来进行继续爬虫操作,这时候就需要代理来维护和管理自己的可用IP。模拟登录。当我们爬取一些需要登录才能看到的信息的时候,就必须先模拟登录,才能进行进一步的爬虫操作。App的爬取。上述的都是网页端的爬虫任务,但是现在越来越多的信息都只能在手机上看到,这种信息可不可以爬虫获取呢?本书对于这一部分也是有比较详细的介绍和案例,甚至还有朋友圈的爬取。事实上这块我目前也不是很熟悉,这也是我下一步要学习的地方。

难能可贵的时候,每次介绍新的概念和场景的时候,除了介绍概念,作者都是附上实际操作的源码。照着做可以很快的上手。

最后还有两个经典的爬虫框架,pyspider和scrapy,这两个框架在进行大批量的爬取可能会比较有帮助。现在我对这两个框架也没有研究过,还需要进一步的学习。比如scrapy在分布式场景下的部署和应用,本书都是有所涉及的。

如果有需要python学习资料的,可以扫描这里!

 

话不多说,直接来展示:

第1章 开发环境配置

1.1 Python 3的安装1.1.1 Windows下的安装1.1.2 Linux下的安装1.1.3 Mac下的安装1.2 请求库的安装1.2.1 requests的安装1.2.2 Selenium的安装1.2.3 ChromeDriver的安装1.2.4 GeckoDriver的安装1.2.5 PhantomJS的安装1.2.6 aiohttp的安装1.3 解析库的安装1.3.1 lxml的安装1.3.2 Beautiful Soup的安装1.3.3 pyquery的安装1.3.4 tesserocr的安装1.4 数据库的安装1.4.1 MySQL的安装1.4.2 MongoDB的安装1.4.3 Redis的安装1.5 存储库的安装1.5.1 PyMySQL的安装1.5.2 PyMongo的安装1.5.3 redis-py的安装1.5.4 RedisDump的安装1.6 Web库的安装1.6.1 Flask的安装1.6.2 Tornado的安装...... 第2章 爬虫基础

2.1 HTTP基本原理2.1.1 URI和URL2.1.2 超文本2.1.3 HTTP和HTTPS2.1.4 HTTP请求过程2.1.5 请求2.1.6 响应2.2 网页基础2.2.1 网页的组成2.2.2 网页的结构2.2.3 节点树及节点间的关系2.2.4 选择器2.3 爬虫的基本原理2.3.1 爬虫概述2.3.2 能抓怎样的数据2.3.3 Javascript渲染页面2.4 会话和cookies2.4.1 静态网页和动态网页2.4.2 无状态HTTP2.4.3 常见误区2.5 代理的基本原理2.5.1 基本原理2.5.2 代理的作用2.5.3 爬虫代理2.5.4 代理分类2.5.5 常见代理设置

 


第3章 基本库的使用

3.1 使用urllib3.1.1 发送请求3.1.2 处理异常3.1.3 解析链接3.1.4 分析Robots协议3.2 使用requests3.2.1 基本用法3.2.2 高级用法3.3 正则表达式3.4 抓取猫眼电影排行
第4章 解析库的使用

4.1 使用XPath4.2 使用Beautiful Soup4.3 使用pyquery

 

第5章 数据存储

5.1 文件存储5.1.1 TXT文本存储5.1.2 JSON文件存储5.1.3 CSV文件存储5.2 关系型数据库存储5.2.1 MySQL的存储5.3 非关系型数据库存储5.3.1 MongoDB存储5.3.2 Redis存储  第6章 Ajax数据爬取

6.1 什么是Ajax6.2 Ajax分析方法6.3 Ajax结果提取6.4 分析Ajax爬取今日头条街拍美图

 


第7章 动态渲染页面爬取    

7.1 Selenium的使用        7.2 Splash的使用7.3 Splash负载均衡配置7.4 使用Selenium爬取淘宝商品

 

第8章 验证码的识别

8.1 图形验证码的识别8.2 极验滑动验证码的识别8.3 点触验证码的识别8.4 微博宫格验证码的识别

 


第9章 代理的使用

9.1 代理的设置9.2 代理池的维护9.3 付费代理的使用9.4 ADSL拨号代理9.5 使用代理爬取微信公众号文章
第10章 模拟登录 

10.1 模拟登录并爬取GitHub10.2 cookies池的搭建

 

第11章 App的爬取

11.1 Charles的使用11.2 mitmproxy的使用11.3 mitmdump爬取“得到”App电子书信息11.4 Appium的基本使用11.5 Appium爬取微信朋友圈11.6 Appium+mitmdump爬取京东商品
第12章 pyspider框架的使用 

12.1 pyspider框架介绍12.2 pyspider的基本使用12.3 pyspider用法详解
第13章 Scrapy框架的使用

13.1 Scrapy框架介绍13.2 Scrapy入门13.3 Selector的用法13.4 Spider的用法13.5 Downloader Middleware的用法13.6 Spider Middleware的用法13.7 Item Pipeline的用法13.8 Scrapy对接Selenium13.9 Scrapy对接Splash13.10 Scrapy通用爬虫13.11 Scrapyrt的使用13.12 Scrapy对接Docker13.13 Scrapy爬取新浪微博

 

第14章 分布式爬虫 

14.1 分布式爬虫原理14.2 Scrapy-Redis源码解析14.3 Scrapy分布式实现14.4 Bloom Filter的对接
第15章 分布式爬虫的部署

15.1 Scrapyd分布式部署15.2 Scrapyd-Client的使用15.3 Scrapyd对接Docker15.4 Scrapyd批量部署15.5 Gerapy分布式管理

由于文章内容比较多,篇幅不允许,部分未展示内容以截图方式展示。如有需要获取完整的资料文档的朋友点赞+评论《python3网络爬虫开发实战》,即可免费获取。

 

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。