在线调试Scrapy Cluster爬虫错误

Scrapy Cluster爬虫调试是开发上线过程中比较麻烦的事情。主要原因是爬虫脚本是本地开发的,即使把开发环境尽量和生产环境配置类似,通过了测试并上生产以后仍然会碰到一些问题。最常见的情况就是生产环境没有数据,但是开发和测试环境有数据。这种情况下,我们就需要耐心地一步一步查看每一个环节的日志文件和数据。以下我们就假设线上爬虫没有数据这个故障来分析判断故障原因。
Read more

MongoDB数据库Too Many Open Files问题

初次使用MongoDB数据库的时候,碰到过很多问题,尤其是Too Many Open Files这个问题非常常见,并且在实际使用中也碰到过好几次。其实解决方案也非常简单,主要是Linux限制了打开文件的最大数量。因此,只要提高这个数量限制就可以了。然而,打开文件句柄的数量毕竟是上限的,因此还是需要找到根源问题,并优化MongoDB的使用方式,尽量避免出现Too Many Open Files的问题。
Read more

爬虫系统构架演进-从脚本到服务的蜕变

最近和很多朋友聊天,有即将毕业的实习生,有资深工程师,也有资深产品经理。大家对于爬虫的认知也有非常大的不同(这个是显而易见的)。很多不了解这项技术的朋友甚至把爬虫技术和黑客技术混为一谈。甚至很多非法倒卖个人隐私数据的公司都被媒体描述为利用了爬虫技术非法获取和买卖数据,这不免让爬虫技术无辜背锅。本文就不解释爬虫的起源,有兴趣的朋友可以在网上搜索一下雅虎(Yahoo),谷歌(Google)和百度(Baidu)的故事,应该会对爬虫的起源有所了解。本文将以新的视角,通过需求的不断演变,描述一个简单的爬虫平台到一个数据服务平台的演进过程。
Read more

使用PS命令在Linux中查看进程性能指标

最近服务器总是由于内存占用问题,或者CPU占用问题导致缓慢甚至崩溃。因此不得不在Linux系统中监控几个重要的服务,查看CPU或者内存的使用情况,并跟踪可能出现的问题。之前对于在Linux查看进程的CPU和内存使用情况略知一二,但是完全达不到能深入调试的地步。大概就是使用top命令或者ps命令查看一下当前系统中占用CPU或者内存最高的进程是什么,但是这个是完全不够的。
Read more

如何判断动态页面和静态页面

目前网页通常分为有静态网页和动态网页两种。在开发页面爬虫的过程中,如果是静态网页,我们可以直接使用URLLib或者Requests等工具直接爬取采集。如果是动态页面,需要等静态部分加载完毕以后,使用Javascript异步调用后端获取数据(使用Ajax异步调用),再动态的渲染页面内容。这种情况下,使用静态页面的方式就无法真正爬取到网页内容了。那么我们在开发页面爬虫之前,如何分辨目标页面是静态页面还是动态页面呢?本文介绍一个简单的方法,教大家如何区分一个网页是动态页面还是静态页面。
Read more

使用VS Code调试开发Scrapy Cluster

最近在研究Scrapy Cluster框架,发现网上的用VS Code调试开发Scrapy Cluster教程很少。由于Scrapy Cluster是一个分布式的数据爬虫框架,所以本地单步调试比较困难。因此作此文详细记录本地配置及调试过程。如果之前没有接触过Scrapy Cluster,建议先参考《Scrapy Cluster新手教程》。如果读者朋友们是使用PyCharm作为开发工具的,可以参考《使用PyCharm调试开发Scrapy Cluster》。本文介绍的Scrapy Cluster版本为1.2.1,Python版本为2.7。下面,我将为大家介绍和演示如何使用VS Code调试开发Scrapy Cluster爬虫。
Read more

使用FFmpeg转换编辑和切分视频

由于之前一直在折腾TS文件,涉及到TS文件的合并和转换,多次用到功能强大的FFmpeg工具。比如之前的《保存腾讯视频离线视频文件》,就需要使用FFmpeg文件把TS文件转换为MP4文件,或者需要把两个MP4文件合并为一个大的MP4文件。本文将总结一些FFmpeg的实用案例,所有的方案都来自互联网,我只是个搬运工。

Read more

Linux云硬盘扩容并保留原有数据

今天突然发现Kafka集群所有机器都下线了,也算是一个不小的事故了。最后查看了主要原因是磁盘满了,惊不惊喜,意不意外?碰到Kafka的本次事故,主要是前期的查看问题,中期的分析问题,和后期的解决问题。查看问题,相对简单。查看Kafka的日志文件基本上能发现。分析问题阶段就要就事论事,仁者见仁,智者见智了。对于本次事故中,我们使用的是3台云端Kafka主机,配置了12个分区(partitions)和3个副本(replication)。数据盘只有可怜的100G,估计也是项目初期评估少了,现在数据量大增,把这茬事都忘了。还好用的是云主机,最简单的方案是扩容。Linxu云磁盘一般是可以弹性扩容的。但是由于初期买了100G已经投入使用,扩容到500G以后,需要卸载已经挂载的数据盘,并且把新增空间扩容到现有数据盘中,可能存在数据丢失风险。因此,这个操作还是需要谨慎应对的。

Read more

M3U8流视频数据爬虫外传二:保存腾讯视频离线视频文件

本来想在自己的老旧Android平板上装个腾讯视频,然后下载很多高清视频离线看。由于平板太老,没办法装腾讯视频的手机版本和平板版本。于是尝试了TV版本和极速版。后来发现TV版本没办法呼出输入法,因此只能使用极速版。初期还是比较好用的,毕竟简化版占用的内存不多,在老年安卓平板上运行还是相当流畅的。然而由于缓存的视频多了以后,发现平板的存储空间不够用了(标配16G)。最后决定把平板连接到电脑上把视频拷贝出来。于是就有了本篇文章。
Read more

M3U8流视频数据爬虫外传一:牛客网TS视频爬取分析

牛客网是国内比较有名的程序员编程练习和培训教育平台。里面有大量的练习题库,并且也提供大量的教学视频服务。由于之前写过一个《M3U8流视频数据爬虫》的系列文章,并且发现牛客网的教学视频也是TS视频。因此基于技术研究的目的,学习一下牛客网的TS视频保护机制,划一些重点出来与大家分享。
Read more