精华内容
下载资源
问答
  • 第1段:爬虫原理与数据抓取 爬虫能做些什么通用爬虫 和聚焦爬虫URL的意义 (了解)关于HTTP和 HTTPS HTTP代理工具 Fidder HTTP的请求与响 应urlib2:Python的标准 模块案例:批量爬取页面 数据 URLError与 ...
  • Python爬虫学习课件.ppt

    2020-08-08 07:01:32
    使用 Python 编写网络爬虫 1 2020/3/2 ? 什么是网络爬虫 ? 网页结构 ? 准备工作 ? 使用 requests 库获取网页源代码 ? 使用正则表达式实现翻页功能 ? 使用 Xpath 进行页面定位 ? 使用 chromedriver 进行模拟浏览器...
  • 爬虫学习之路3

    2019-08-08 17:56:22
    对应 皓之泽! 爬虫学习之路3 内容 re正则表达式常用函数, 读写csv文件 古诗文爬虫 正则化基本应用 转化为json字符
  • 爬虫学习之路2

    2019-08-08 17:52:40
    对应在 皓之泽! 博客中的爬虫学习之路2 包括中国天气查询 bs解析 文本 豆瓣电影 电影天堂
  • python爬虫学习++++。

    2018-11-30 08:58:02
    python爬虫完整学习资源,包括框架及应用,很详细
  • 最牛逼的Python爬虫学习笔记,非常不错的,强烈建议下载
  • 本文实例讲述了Python3爬虫学习之应对网站反爬虫机制的方法。分享给大家供大家参考,具体如下: 如何应对网站的反爬虫机制 在访问某些网站的时候,网站通常会用判断访问是否带有头文件来鉴别该访问是否为爬虫,用来...
  • Python爬虫学习(一)之简单实现、Python爬虫学习(二)之Requests库将先添加至@TO-DO list里。 对于Scrapy的学习采取了阅读文档然后直接上手一个小项目的方式。这个项目的任务是爬取豆瓣电影 Top 250,把250部电影...
  • python--爬虫--爬虫学习路线指南

    千次阅读 多人点赞 2019-07-05 14:50:02
    爬虫的作用 利用爬虫我们可以获取大量的价值数据,从而获得感性认识中不能得到的信息,比如: 知乎:爬取优质答案,为你筛选出各话题下最优质的内容。 豆瓣: 优质的电影 淘宝、京东:抓取商品、评论及销量数据,对...

    目标

    拥有爬取大规模数据的能力

    爬虫的作用

    利用爬虫我们可以获取大量的价值数据,从而获得感性认识中不能得到的信息,比如:

    知乎:爬取优质答案,为你筛选出各话题下最优质的内容。
    豆瓣: 优质的电影
    淘宝、京东:抓取商品、评论及销量数据,对各种商品及用户的消费场景进行分析。
    安居客、链家:抓取房产买卖及租售信息,分析房价变化趋势、做不同区域的房价分析。
    拉勾网、智联:爬取各类职位信息,分析各行业人才需求情况及薪资水平。
    雪球网:抓取雪球高回报用户的行为,对股票市场进行分析和预测。
    股票信息:分析股价选股

    数据采集是 数据清洗和分析挖掘的前提,爬虫是数据采集的手段之一。

    语言的选择

    java

    httpclient体系

    python

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

    学习路径

    一条平滑的、零基础快速入门的学习路径。

    1.学习 Python 包并实现基本的爬虫过程
    2.了解非结构化数据的存储
    3.学习scrapy,搭建工程化爬虫
    4.学习数据库知识,应对大规模数据存储与提取
    5.掌握各种技巧,应对特殊网站的反爬措施
    6.分布式爬虫,实现大规模并发采集,提升效率

    学习 Python 包并实现基本的爬虫过程

    大部分爬虫都是按“发送请求——获得页面——解析页面——抽取并储存内容”这样的流程来进行,这其实也是模拟了我们使用浏览器获取网页信息的过程。

    Python中爬虫相关的包很多:urllib、requests、bs4、scrapy、pyspider 等,建议从requests+Xpath 开始,requests 负责连接网站,返回网页,Xpath 用于解析网页,便于抽取数据。

    如果你用过 BeautifulSoup,会发现 Xpath 要省事不少,一层一层检查元素代码的工作,全都省略了。这样下来基本套路都差不多,一般的静态网站根本不在话下,豆瓣、糗事百科、腾讯新闻等基本上都可以上手了。

    当然如果你需要爬取异步加载的网站,可以学习浏览器抓包分析真实请求或者学习Selenium来实现自动化,这样,知乎、时光网、猫途鹰这些动态的网站也可以迎刃而解。

    需要掌握的内容

    1、基础知识–网页前端的三要素是HTML+CSS+JavaScript,其中HTML中有网页大量的信息,因此爬虫主要是抓取和解析网页的HTML。

    2、requests库

    3、提交请求–post put get等 headers

    4、响应内容–response

    5、BeautifulSoup

    6、 BeautifulSoup使用方法

    7、Selenium+PhantomJS(自动化测试工具)

    Selenium是一个用于Web应用程序测试的工具,同时我们可以使用它来模拟真实浏览器对URL进行访问从而对网页进行爬取。

    Selenium的往往要配合PhantomJS使用

    Selenium+PhantomJS可以抓取那些使用JS加载数据的网页。你可以试着使用requests去抓取B站首页,你会发现,你抓取不到那些具体的视频名称及链接,但是我们可以通过以下代码抓取

    from selenium import webdriver
    driver = webdriver.PhantomJS()
    driver.get('https://www.bilibili.com')
    html = driver.page_source
    

    了解非结构化数据的存储

    爬回来的数据可以直接用文档形式存在本地,也可以存入数据库中。

    开始数据量不大的时候,你可以直接通过 Python 的语法或 pandas 的方法将数据存为csv这样的文件。

    当然你可能发现爬回来的数据并不是干净的,可能会有缺失、错误等等,你还需要对数据进行清洗,可以学习 pandas 包的基本用法来做数据的预处理,得到更干净的数据。

    学习 scrapy,搭建工程化的爬虫

    掌握前面的技术一般量级的数据和代码基本没有问题了,但是在遇到非常复杂的情况,可能仍然会力不从心,这个时候,强大的 scrapy 框架就非常有用了。

    scrapy 是一个功能非常强大的爬虫框架,它不仅能便捷地构建request,还有强大的 selector 能够方便地解析 response,然而它最让人惊喜的还是它超高的性能,让你可以将爬虫工程化、模块化。

    学会 scrapy,你可以自己去搭建一些爬虫框架,你就基本具备爬虫工程师的思维了。

    学习数据库基础,应对大规模数据存储

    爬回来的数据量小的时候,你可以用文档的形式来存储,一旦数据量大了,这就有点行不通了。所以掌握一种数据库是必须的,学习目前比较主流的 MongoDB 就OK。

    MongoDB 可以方便你去存储一些非结构化的数据,比如各种评论的文本,图片的链接等等。你也可以利用PyMongo,更方便地在Python中操作MongoDB。

    因为这里要用到的数据库知识其实非常简单,主要是数据如何入库、如何进行提取,在需要的时候再学习就行。

    掌握各种技巧,应对特殊网站的反爬措施

    当然,爬虫过程中也会经历一些绝望啊,比如被网站封IP、比如各种奇怪的验证码、userAgent访问限制、各种动态加载等等。

    遇到这些反爬虫的手段,当然还需要一些高级的技巧来应对,常规的比如访问频率控制、使用代理IP池、抓包、验证码的OCR处理等等。

    往往网站在高效开发和反爬虫之间会偏向前者,这也为爬虫提供了空间,掌握这些应对反爬虫的技巧,绝大部分的网站已经难不到你了。

    分布式爬虫,实现大规模并发采集

    爬取基本数据已经不是问题了,你的瓶颈会集中到爬取海量数据的效率。这个时候,相信你会很自然地接触到一个很厉害的名字:分布式爬虫。

    分布式这个东西,听起来很恐怖,但其实就是利用多线程的原理让多个爬虫同时工作,需要你掌握 Scrapy + MongoDB + Redis 这三种工具。

    Scrapy 前面我们说过了,用于做基本的页面爬取,MongoDB 用于存储爬取的数据,Redis 则用来存储要爬取的网页队列,也就是任务队列。

    所以有些东西看起来很吓人,但其实分解开来,也不过如此。当你能够写分布式的爬虫的时候,那么你可以去尝试打造一些基本的爬虫架构了,实现一些更加自动化的数据获取。

    你看,这一条学习路径下来,你已然可以成为老司机了,非常的顺畅。所以在一开始的时候,尽量不要系统地去啃一些东西,找一个实际的项目(开始可以从豆瓣、小猪这种简单的入手),直接开始就好。

    参考链接

    转载案例一:https://cloud.tencent.com/developer/article/1087487

    系统体系的学习: https://www.kancloud.cn/xmsumi/pythonspider/160078

    例子参考二:http://yshblog.com/blog/148

    展开全文
  • python爬虫学习笔记 2.9 (使用bs4得案例) python爬虫学习笔记 1.1(通用爬虫和聚焦爬虫) python爬虫学习笔记 1.2 ( HTTP和HTTPS ) python爬虫学习笔记 1.3 str和bytes的区别 python爬虫学习笔记 1.4 (Request...
  • python爬虫学习笔记(一)——初识爬虫 python爬虫学习笔记(二)——解析内容 开始实战爬取豆瓣TOP250电影 首先还是重新复习下爬虫的基本流程: 发起请求 获取响应内容 解析内容 保存数据 1. 发起请求 首先观察豆瓣...
  • 这是对爬虫这个库的使用的基本认识和学习,使用Python语言完成
  • python 爬虫学习资料.zip
  • Python 爬虫学习路线图

    千次阅读 多人点赞 2020-09-24 11:40:00
    点击上方“编程派”,选择设为“设为星标”优质文章,第一时间送达!“ 阅读本文大概需要 3 分钟。 ”当今大数据的时代,网络爬虫已经成为了获取数据的一个重要手段。但要学习爬虫并没有那么简...

    点击上方“编程派”,选择设为“设为星标”

    优质文章,第一时间送达!

    阅读本文大概需要 3 分钟。

    当今大数据的时代,网络爬虫已经成为了获取数据的一个重要手段。

    但要学习好爬虫并没有那么简单。首先知识点和方向实在是太多了,它关系到了计算机网络、编程基础、前端开发、后端开发、App 开发与逆向、网络安全、数据库、运维、机器学习、数据分析等各个方向的内容,它像一张大网一样把现在一些主流的技术栈都连接在了一起。正因为涵盖的方向多,因此学习的东西也非常零散和杂乱,很多初学者搞不清楚究竟要学习哪些知识,学习过程中遇到反爬也不知道用什么方法来解决,本篇我们来做一些归纳和总结。

    初学爬虫

    一些最基本的网站,往往不带任何反爬措施。比如某个博客站点,我们要爬全站的话就顺着列表页爬到文章页,再把文章的时间、作者、正文等信息爬下来就可以了。

    那代码怎么写呢?用 Python 的 requests 等库就够了,写一个基本的逻辑,顺着把一篇篇文章的源码获取下来,解析的话用 XPath、BeautifulSoup、PyQuery 或者正则表达式,或者粗暴的字符串匹配把想要的内容抠出来,再加个文本写入存下来就完事了。

    代码很简单,就几个方法调用。逻辑很简单,几个循环加存储。最后就能看到一篇篇文章就被我们存到自己的电脑里面了。当然有的同学可能不太会写代码或者都懒得写,那么利用基本的可视化爬取工具,如某爪鱼、某裔采集器也能通过可视化点选的方式把数据爬下来。

    如果存储方面稍微扩展一下的话,可以对接上 MySQL、MongoDB、Elasticsearch、Kafka 等等来保存数据,实现持久化存储。以后查询或者操作会更方便。

    反正,不管效率如何,一个完全没有反爬的网站用最最基本的方式就搞定了。

    到这里,你就说你会爬虫了吗?不,还差的远呢。

    Ajax、动态渲染

    随着互联网的发展,前端技术也在不断变化,数据的加载方式也不再是单纯的服务端渲染了。现在你可以看到很多网站的数据可能都是通过接口的形式传输的,或者即使不是接口那也是一些 JSON 的数据,然后经过 JavaScript 渲染得出来的。

    这时候,你要再用 requests 来爬那就不顶用了,因为 requests 爬下来的源码是服务端渲染得到的,浏览器看到页面的和 requests 获取的结果是不一样的。真正的数据是经过 JavaScript 执行的出来的,数据来源可能是 Ajax,也可能是页面里的某些 Data,也可能是一些 ifame 页面等等,不过大多数情况下可能是 Ajax 接口获取的。

    所以很多情况下需要分析 Ajax,知道这些接口的调用方式之后再用程序来模拟。但是有些接口带着加密参数,比如 token、sign 等等,又不好模拟,咋整呢?

    一种方法就是去分析网站的 JavaScript 逻辑,死抠里面的代码,揪出来这些参数是怎么构造的,找出思路来了之后再用爬虫模拟或重写就行了。如果你解出来了,那么直接模拟的方式效率会高非常多,这里面就需要一些 JavaScript 基础了,当然有些网站加密逻辑做的太牛逼了,你可能花一个星期也解不出来,最后放弃了。

    那这样解不出来或者不想解,那咋办呢?这时候可以有一种简单粗暴的方法就是直接用模拟浏览器的方式来爬取,比如用 Puppeteer、Pyppeteer、Selenium、Splash 等,这样爬取到的源代码就是真正的网页代码,数据自然就好提取了,同时也就绕过分析 Ajax 和一些 JavaScript 逻辑的过程。这种方式就做到了可见即可爬,难度也不大,同时模拟了浏览器,也不太会有一些法律方面的问题。

    但其实后面的这种方法也会遇到各种反爬的情况,现在很多网站都会去识别 webdriver,看到你是用的 Selenium 等工具,直接干掉或不返回数据,所以你碰到这种网站还得来专门解一下这个问题。

    多进程、多线程、协程

    上面的情况如果用单线程的爬虫来模拟是比较简单的,但是有个问题就是速度慢啊。

    爬虫是 IO 密集型的任务,所以可能大多数情况下都在等待网络的响应,如果网络响应速度慢,那就得一直等着。但这个空余的时间其实可以让 CPU 去做更多事情。那怎么办呢?多开点线程吧。

    所以这时候我们就可以在某些场景下加上多进程、多线程,虽然说多线程有 GIL 锁,但对于爬虫来说其实影响没那么大,所以用上多进程、多线程都可以成倍地提高爬取速度,对应的库就有 threading、multiprocessing 了。

    异步协程就更牛逼了,用 aiohttp、gevent、tornado 等等的基本上你想搞多少并发就搞多少并发,但是还是悠着点,别把人家网站搞挂了。

    总之,用上这几个,爬虫速度就提上来了。

    但速度提上来了不一定是好事,反爬接着肯定就要来了,封你 IP、封你账号、弹验证码、返回假数据,所以有时候龟速爬似乎也是个解决办法?

    分布式

    多线程、多进程、协程都能加速,但终究还是单机的爬虫。要真正做到规模化,还得来靠分布式爬虫来搞。

    分布式的核心是什么?资源共享。比如爬取队列共享、去重指纹共享等等。

    我们可以使用一些基础的队列或组件来实现分布式,比如 RabbitMQ、Celery、Kafka、Redis 等等,但经过很多人的尝试,自己去实现一个分布式爬虫,性能和扩展性总会出现一些问题,当然特别牛逼的除外哈。不少企业内部其实也有自己开发的一套分布式爬虫,和业务更紧密,这种当然是最好了。

    现在主流的 Python 分布式爬虫还是基于 Scrapy 的,对接 Scrapy-Redis、Scrapy-Redis-BloomFilter 或者用 Scrapy-Cluster 等等,他们都是基于 Redis 来共享爬取队列的,总会多多少少遇到一些内存的问题。所以一些人也考虑对接到了其他的消息队列上面,比如 RabbitMQ、Kafka 等等,解决一些问题,效率也不差。

    总之,要提高爬取效率,分布式还是必须要掌握的。

    验证码

    爬虫难免遇到反爬,验证码就是其中之一。要会反爬,那首先就要会解验证码。

    现在你可以看到很多网站都会有各种各样的验证码了,比如最简单的图形验证码,要是验证码的文字规整的话,OCR 过一遍或者基本的模型库都能识别,不想搞这个的话可以直接去对接个打码平台来搞,准确率还是有的。

    然而你可能现在都见不到什么图形验证码了,都是一些行为验证码,如某验、某盾等等,国外也有很多,比如 reCaptcha 等等。一些稍微简单一点的,比如滑动的,你可以找点办法识别缺口,比如图像处理比对、深度学习识别都是可以的。轨迹呢自己写个模拟正常人行为的,加点抖动之类的。有了轨迹之后咋模拟呢,如果你牛逼,那么可以直接去分析验证码的 JavaScript 逻辑,把轨迹数据录入,那就能得到里面的一些加密参数,直接拿着这些参数放到表单或接口里面就能直接用了。当然也可以用模拟浏览器的方式来拖动,也能通过一定的方式拿到加密参数,或者直接用模拟浏览器的方式把登录一起做了,拿着 Cookies 来爬也行。

    当然拖动只是一种验证码,还有文字点选、逻辑推理等,要是真不想搞,可以找打码平台来解出来再模拟,但毕竟花钱的,一些高手就会选择自己训练深度学习相关的模型,收集数据、标注、训练,针对不同的业务训练不同的模型。这样有了核心技术,也不用再去花钱找打码平台了,再研究下验证码的逻辑模拟一下,加密参数就能解出来了。不过有的验证码难得很,有的我也没搞定。

    当然有些验证码可能是请求过于频繁而弹出来的,这种如果换个 IP 什么的也能解。

    封 IP

    封 IP 也是个令人头疼的事,行之有效的方法就是换代理了。

    代理很多种,市面上免费的,收费的太多太多了。

    首先可以把市面上免费的代理用起来,自己搭建一个代理池,收集现在全网所有的免费代理,然后加一个测试器一直不断测试,测试的网址可以改成你要爬的网址。这样测试通过的一般都能直接拿来爬你的目标网站。我自己也搭建过一个代理池,现在对接了一些免费代理,定时爬、定时测,还写了个 API 来取,放在 GitHub 了:https://github.com/Python3WebSpider/ProxyPool,打好了 Docker 镜像,提供了 Kubernetes 脚本,大家可以直接拿来用。

    付费代理也是一样,很多商家提供了代理提取接口,请求一下就能获取几十几百个代理,我们可以同样把它们接入到代理池里面。但这个代理也分各种套餐,什么开放代理、独享代理等等的质量和被封的几率也是不一样的。

    有的商家还利用隧道技术搭了代理,这样代理的地址和端口我们是不知道的,代理池是由他们来维护的,比如某布云,这样用起来更省心一些,但是可控性就差一些。

    还有更稳定的代理,比如拨号代理、蜂窝代理等等,接入成本会高一些,但是一定程度上也能解决一些封 IP 的问题。

    不过这些背后也不简单,为啥一个好好的高匿代理就是莫名其妙爬不了,背后的一些事就不多讲了。

    ##封账号

    有些信息需要模拟登录才能爬嘛,如果爬的过快,人家网站直接把你的账号封禁了,就啥都没得说了。比如爬公众号的,人家把你 WX 号封了,那就全完了。

    一种解决方法当然就是放慢频率,控制下节奏。

    还有种方法就是看看别的终端,比如手机页、App 页、wap 页,看看有没有能绕过登录的法子。

    另外比较好的方法,那就是分流。如果你号足够多,建一个池子,比如 Cookies 池、Token 池、Sign 池反正不管什么池吧,多个账号跑出来的 Cookies、Token 都放到这个池子里面,用的时候随机从里面拿一个。如果你想保证爬取效率不变,那么 100 个账号相比 20 个账号,对于每个账号对应的 Cookies、Token 的取用频率就变成原来的了 1/5,那么被封的概率也就随之降低了。

    奇葩的反爬

    上面说的是几种比较主流的反爬,当然还有非常多奇葩的反爬。比如返回假数据、返回图片化数据、返回乱序数据、返回骂人的数据、返回求饶的数据,那都具体情况看着办吧。

    这些反爬也得小心点,之前见过一个反爬直接返回 rm -rf / 的也不是没有,你要是正好有个脚本模拟执行返回结果,后果自己想象哈。

    JavaScript 逆向

    说到重头了。随着前端技术的进步和网站反爬意识的增强,很多网站选择在前端上下功夫,那就是在前端对一些逻辑或代码进行加密或混淆。当然这不仅仅是为了保护前端的代码不被轻易盗取,更重要的是反爬。比如很多 Ajax 接口都会带着一些参数,比如 sign、token 等等,这些前文也讲过了。这种数据我们可以用前文所说的 Selenium 等方式来爬,但总归来说效率太低了,毕竟它模拟的是网页渲染的整个过程,而真实的数据可能仅仅就藏在一个小接口里。

    如果我们能够把一些接口的参数真正找出其中的逻辑,用代码来模拟执行,那效率就会有成倍的提升,而且还能在一定程度上规避上述的反爬现象。

    但问题是什么?难啊。

    Webpack 是一方面,前端代码都被压缩和转码成一些 bundle 文件,一些变量的含义已经丢失,不好还原。然后一些网站再加上一些 obfuscator 的机制,把前端代码变成你完全看不懂的东西,比如字符串拆散打乱、变量十六进制化、控制流扁平化、无限 debug、控制台禁用等等,前端的代码和逻辑已经面目全非。有的用 WebAssembly 等技术把前端核心逻辑直接编译,那就只能慢慢抠了,虽然说有些有一定的技巧,但是总归来说还是会花费很多时间。但一旦解出来了,那就万事大吉了。怎么说?就像奥赛题一样,解出来升天,解不出来 GG。

    很多公司招聘爬虫工程师都会问有没有 JavaScript 逆向基础,破解过哪些网站,比如某宝、某多、某条等等,解出来某个他们需要的可能就直接录用你。每家网站的逻辑都不一样,难度也不一样。

    App

    当然爬虫不仅仅是网页爬虫了,随着互联网时代的发展,现在越来越多的公司都选择将数据放到 App 上面,甚至有些公司只有 App 没有网站。所以数据只能通过 App 来爬。

    咋爬呢?基本的就是抓包工具了,Charles、Fiddler 一把梭,抓到接口之后,直接拿来模拟就行了。

    如果接口有加密参数怎么办呢?一种方法你可以边爬边处理,比如 mitmproxy 直接监听接口数据。另一方面你可以走 Hook,比如上 Xposed 也可以拿到。

    那爬的时候又怎么实现自动化呢?总不能拿手来戳吧。其实工具也多,安卓原生的 adb 工具也行,Appium 现在已经是比较主流的方案了,当然还有其他的某精灵都是可以实现的。

    最后,有的时候可能真的就不想走自动化的流程,我就想把里面的一些接口逻辑抠出来,那就得搞逆向了,IDA Pro、jdax、FRIDA 等工具就派上用场了,当然这个过程和 JavaScript 逆向一样很痛苦,甚至可能得读汇编指令。搞一个案例掉一把头发也不是不可能的。

    智能化

    上面的这一通,都搞熟了,恭喜你已经超过了百分之八九十的爬虫玩家了,当然专门搞 JavaScript 逆向、App 逆向的都是站在食物链顶端的男人,这种严格来说已经不算爬虫范畴了,这种神我们就不算在里面了,反正我不是。

    除了上面的一些技能,在一些场合下,我们可能也需要结合一些机器学习的技术,让我们的爬虫变得更智能起来。

    比如现在很多博客、新闻文章,其页面结构相似度比较高,要提取的信息也比较类似。

    比如如何区分一个页面是索引页还是详情页?如何提取详情页的文章链接?如何解析文章页的页面内容?这些其实都是可以通过一些算法来计算出来的。

    所以,一些智能解析技术也营运而生,比如提取详情页,一位朋友写的 GeneralNewsExtractor 表现就非常好。

    假如说我来了一个需求,我要爬取一万个新闻网站数据,要一个个写 XPath 吗?写死我吧。如果有了智能化解析技术,在容忍一定错误的条件下,完成这个就是分分钟的事情。

    总之,如果我们能把这一块也学会了,我们的爬虫技术就会如虎添翼。

    运维

    这块也是一个重头戏。爬虫和运维也是息息相关。

    比如写完一个爬虫,怎样去快速部署到 100 台主机上跑起来。

    比如怎么灵活地监控每个爬虫的运行状态。

    比如爬虫有处代码改动,如何去快速更新。

    比如怎样监控一些爬虫的占用内存、消耗的 CPU 状况。

    比如怎样科学地控制爬虫的定时运行、

    比如爬虫出现了问题,怎样能及时收到通知,怎样设置科学的报警机制。

    这里面,部署大家各有各的方法,比如用 Ansible 当然可以。如果用 Scrapy 的话有 Scrapyd,然后配合上一些管理工具也能完成一些监控和定时任务。不过我现在用的更多是还是 Docker + Kubernetes,再加上 DevOps 一套,比如 GitHub Actions、Azure Pipelines、Jenkins 等等,快速实现分发和部署。

    定时任务大家有的用 crontab,有的用 apscheduler,有的用管理工具,有的用 Kubernetes,我的话用 Kubernetes 就多一些了,定时任务也是很好实现。

    至于监控的话,也有很多,专门的一些爬虫管理工具自带了一些监控和报警功能。一些云服务也带了一些监控的功能。我用的是 Kubernetes + Prometheus + Grafana,什么 CPU、内存、运行状态,一目了然,报警机制在 Grafana 里面配一下也很方便,支持 Webhook、邮件甚至某钉。

    数据的存储和监控,用 Kafka、Elasticsearch 个人感觉也挺方便的,我主要用的是后者,然后再和 Grafana 配合起来,数据爬取量、爬取速度等等监控也都一目了然。

    结语

    至此,爬虫的一些涵盖的知识点也就差不多了,怎么样,梳理一下,是不是计算机网络、编程基础、前端开发、后端开发、App 开发与逆向、网络安全、数据库、运维、机器学习都涵盖到了?上面总结的可以算是从爬虫小白到爬虫高手的路径了,里面每个方向其实可研究的点非常多,每个点做精了,都会非常了不起。

    爬虫往往学着学着,就成为了一名全栈工程师或者全干工程师,因为你可能真的啥都会了。但是没办法啊,都是被爬虫逼的啊,如果不是生活所困,谁愿意一身才华呢?

    然而有了才华之后呢?摸摸头顶,卧槽,我的头发呢?

    嗯,大家都懂的。

    最后最重要的,珍爱生命、珍爱每一根头发。

    回复下方「关键词」,获取优质资源

    回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版

    回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版

    回复关键词「m」,立即获取Python精选优质文章合集

    回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~

    推荐阅读

    题图:pexels,CC0 授权。

    展开全文
  • 分布式爬虫 学习框架 c# , 学习分布式的思路
  • 2、爬虫目的 爬取目标网站的文本,如古诗的内容,作者,朝代,并且保存到本地中。  3、爬虫程序 # -*- coding:utf-8 -*- #爬取古诗网站 import requests import re #下载数据 def write_data(data): with open('...
  • AliExpress爬虫学习 学了一天python,今天练手写个爬虫: 功能:抓取AliExpress里面每个商品目录下的前N页商品信息 使用selenium webdriver获取登录信息,所以需要安装chromedriver来支持Chrome或geckodriver来支持...
  • 面向对象+模块爬虫学习
  • 主要为大家详细介绍了python网络爬虫学习笔记的第一篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了python爬虫学习笔记之pyquery模块基本用法,结合实例形式详细分析了python爬虫pyquery模块基本功能、用法及操作注意事项,需要的朋友可以参考下
  • Python 爬虫学习

    2018-02-27 13:47:58
    本节课程的内容是介绍什么是爬虫爬虫有什么用?以及爬虫是如何实现的?从这三点来全面剖析爬虫这一工具。
  • 主要介绍了Python3爬虫学习入门,简单介绍了Python3爬虫的功能、原理及使用爬虫爬取知乎首页相关操作技巧,需要的朋友可以参考下
  • 爬虫学习笔记.pdf

    2019-12-09 14:54:35
    整理的python爬虫学习笔记,包括了BeautifulSoup库,正则表达式,re库,Scrapy框架的使用
  • 零基础学习Python爬虫学习线路图

    千次阅读 2019-01-15 18:02:12
    现在之所以有这么多的小...但是这并不意味着单纯掌握一门Python语言,就对爬虫技术触类旁通,要学习的知识和规范还有喜很多,包括但不仅限于HTML 知识、HTTP/HTTPS 协议的基本知识、正则表达式、数据库知识,常用抓...

    现在之所以有这么多的小伙伴热衷于爬虫技术,无外乎是因为爬虫可以帮我们做很多事情,比如搜索引擎、采集数据、广告过滤等,以Python为例,Python爬虫可以用于数据分析,在数据抓取方面发挥巨大的作用。

    但是这并不意味着单纯掌握一门Python语言,就对爬虫技术触类旁通,要学习的知识和规范还有喜很多,包括但不仅限于HTML 知识、HTTP/HTTPS 协议的基本知识、正则表达式、数据库知识,常用抓包工具的使用、爬虫框架的使用等。而且涉及到大规模爬虫,还需要了解分布式的概念、消息队列、常用的数据结构和算法、缓存,甚至还包括机器学习的应用,大规模的系统背后都是靠很多技术来支撑的。

    零基础如何学爬虫技术?对于迷茫的初学者来说,爬虫技术起步学习阶段,最重要的就是明确学习路径,找准学习方法,唯有如此,在良好的学习习惯督促下,后期的系统学习才会事半功倍,游刃有余。(下面这张自己总结的学习线路图大家可作为基础入门的参考)

     

    用Python写爬虫,首先需要会Python,把基础语法搞懂,知道怎么使用函数、类和常用的数据结构如list、dict中的常用方法就算基本入门。作为入门爬虫来说,需要了解 HTTP协议的基本原理,虽然 HTTP 规范用一本书都写不完,但深入的内容可以放以后慢慢去看,理论与实践相结合后期学习才会越来越轻松。关于爬虫学习的具体步骤,我大概罗列了以下几大部分,大家可以参考:

     

    网络爬虫基础知识:

    • 爬虫的定义
    • 爬虫的作用
    • Http协议
    • 基本抓包工具(Fiddler)使用

    Python模块实现爬虫:

    • urllib3、requests、lxml、bs4 模块大体作用讲解
    • 使用requests模块 get 方式获取静态页面数据
    • 使用requests模块 post 方式获取静态页面数据
    • 使用requests模块获取 ajax 动态页面数据
    • 使用requests模块模拟登录网站
    • 使用Tesseract进行验证码识别

    Scrapy框架与Scrapy-Redis:

    • Scrapy 爬虫框架大体说明
    • Scrapy spider 类
    • Scrapy item 及 pipeline
    • Scrapy CrawlSpider 类
    • 通过 Scrapy-Redis 实现分布式爬虫

    借助自动化测试工具和浏览器爬取数据:

    • Selenium + PhantomJS 说明及简单实例
    • Selenium + PhantomJS 实现网站登录
    • Selenium + PhantomJS 实现动态页面数据爬取

    爬虫项目实战:

    • 分布式爬虫 + Elasticsearch 打造搜索引擎

     

    最后,如需获取爬虫和数据分析的视频教程,请敲传送门获取

     

    展开全文
  • 爬虫学习.py

    2019-08-22 10:47:44
    爬虫学习,人工智能,深度学习,自然语言处理
  • 本文给大家分享的是python使用requests爬虫库实现单线程爬虫的代码以及requests库的安装和使用,有需要的小伙伴可以参考下
  • 本文给大家介绍的是python基于XPath实现多线程爬虫的实例以及XPath的介绍安装和简单用法,非常的细致,有需要的小伙伴可以参考下
  • 主要介绍了Python3爬虫学习之MySQL数据库存储爬取的信息,涉及Python3针对mysql数据库的连接、信息存储等相关操作技巧,需要的朋友可以参考下
  • 主要介绍了Python3爬虫学习之爬虫利器Beautiful Soup用法,结合实例形式分析了Beautiful Soup的功能、使用方法及相关操作注意事项,需要的朋友可以参考下
  • 主要为大家详细介绍了Python爬虫学习之翻译小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 143,157
精华内容 57,262
关键字:

爬虫学习

爬虫 订阅