php多线程抓取多个网页(谢邀!我用PHP和Python都写过爬虫和正文提取程序)
优采云 发布时间: 2022-04-18 22:10php多线程抓取多个网页(谢邀!我用PHP和Python都写过爬虫和正文提取程序)
谢谢!
我用 PHP 和 Python 编写了爬虫和正文提取器。
我开始使用PHP,那么我们来谈谈PHP的优点:
1.语言比较简单,PHP是一门很随意的语言。它很容易编写,让您专注于您正在尝试做的事情,而不是各种语法规则等等。
2.各种功能模块齐全,分为两部分:
1.网页下载:curl等扩展库;
2.文档解析:dom、xpath、tidy、各种转码工具,可能和题主的问题不一样,我的爬虫需要提取文本,所以需要很复杂的文本处理,所以各种方便的文本处理工具是我的最爱。;
总之,很容易上手。
缺点:
1. 并发处理能力弱:由于当时PHP没有线程和进程函数,为了实现并发,需要借用多渠道消费模型,而PHP使用了select模型。实现起来比较麻烦,可能是因为level的问题,我的程序经常会出现一些错误,导致错过catch。
让我们谈谈Python:
优势:
1.各种爬虫框架,下载网页方便高效;
2.多线程,成熟稳定的进程模型,爬虫是典型的多任务场景,请求页面时会有很长的延迟,一般会多等待。多线程或多进程将优化程序效率,提高整个系统的下载和分析能力。
3. GAE的支持,我写爬虫的时候刚好有GAE,而且只支持Python。使用 GAE 创建的爬虫几乎是免费的。我最多有近 1,000 个应用程序实例在工作。
缺点:
1. 对非标准HTML的适应性差:比如一个页面同时有GB18030字符集中文和UTF-8字符集中文,Python处理不像PHP那么简单,需要自己做很多的判断工作。当然,这在提取文本时很麻烦。
Java和C++当时也在研究,比脚本语言更麻烦,所以放弃了。
总之,如果你开发一个小规模的爬虫脚本语言,它是一门各方面都有优势的语言。如果你想开发复杂的爬虫系统,Java可能是一个额外的选择,而C++我觉得写一个模块更合适。对于爬虫系统来说,下载和内容解析只是两个基本功能。一个真正好的系统还包括完整的任务调度、监控、存储、页面数据保存和更新逻辑、重新加载等等。爬虫是一个消耗带宽的应用程序。一个好的设计会节省大量的带宽和服务器资源,好坏差距很大。