如何优化 Python 爬虫的速度

如何优化 Python 爬虫的速度,第1张

从以下的五个方面去进行优化测试:

1、cpu瓶颈的话可以通过分布式的方式来解决 更多的结点去处理分发的任务就好了

2、本地带宽的瓶颈通过云服务器解决(一般都有100MB的方案提供) 定时定量的去购买使用可以节约成本(毕竟不是搜索引擎不会一直开着的)

3、目标服务器的带宽限制(基于IP的)通过跨区的服务器解决 云服务器提供商有多个机房的 分散节点所在的机房可以缓解问题 有提供动态ip的就更好了

4、目标服务器的访问限制,老渔哥提示搜一下<反爬虫>策略就差不多了解了 根据自己的编程能力来应对 给两个库投石问路 SeleniumPhantomJS 对于验证码相关的可以考虑购买服务(有外包的, 最高级别是人肉的一定可以搞定, 量要考虑一下价格不菲)真的不建议自己搞。

目标网站系统比较知名的话(discuz)可以网上搜搜 足够简单的话可以用opencv(有python绑定的版本而且跨平台) thredshold(二值化)处理颜色, eroded/dilate(腐蚀膨胀)处理噪点, findContours(查找轮廓)处理字符分割,穷举旋转和简单扭曲再匹配字库差不多就可以处理2010以前的简单二维码了(当然cpu开销还是很大的)

5、目标服务器的带宽上限限制 这么做的话你的爬虫就成了攻击了不讨论----以下内容常规的爬虫可能不会涉

这个其实很简单,WIN上面一样可以用定时程序,而且是PHP自带的,LINUX下用CRONTAB就可以了

在WIN下面用函数-ignore_user_abort,这个函数可以帮助我们实现像linux中的cron一样实现计划任务,下面一起来看下该如何来实现。

首先看下php手册对这个函数的解释

Description

int ignore_user_abort ([ bool $setting ] )

Sets whether a client disconnect should cause a script to be aborted

也就是说无论客户端是否关闭浏览器,下面的程序都会执行

再看下其参数

Parameters

setting

If not set, the function will only return the current setting

这个函数接受一个参数,来决定是否启用ignore_user_abort的功能。

再看其返回值:

Return Values

Returns the previous setting, as a boolean

这里说返回前一次的设置,并且是bool值得,经过我的测试,这个说法是不对的,返回的明明是int型的,不相信的话大家可以写一个php文件来测试下。

说了这么多了,到底该如何用php的这个函数实现计划任务呢?还跌借助另外一个函数,这个函数是set_time_limit,通过set_time_limit0)可以设置程序的执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去。在程序执行之前加上ignore_user_abort(1)和set_time_limit(0)即可以了,最终程序该如何写呢?给大家一个例子。

QUOTE:

ignore_user_abort(); // run script in background

set_time_limit(0); // run script forever

$interval=6015; // do every 15 minutes

do{

// add the script that has to be ran every 15 minutes here

//

sleep($interval); // wait 15 minutes

}while(true);

>

解决方法一:

打开“服务”项目,选择mysql服务,在右键中选择其“恢复”选项,它负责服务失败时计算机的反应。每一次失败时,你可以选择(1)不操作;(2)重新启动服务;(3)运行一个程序;(4)重启服务器。您可以在第一次和第二次失败时选择重新启动服务,第三次失败就重启服务器,这样可以在无人值守的情况下达到自稳。但遗憾的是windows的这项内置服务工作时并不尽如人意。

解决方法二:

定期优化MySQL,这可以通过Mysql administrator来执行,也可以使用mysql的维护工具mysqlcheck,使用方法为:进入Mysql的Bin目录:C:\Program Files\MySQL\MySQL Server 41\bin 运行:mysqlcheck -A -o -r -uroot -p123456(注意,将123456改成你自己的root用户密码, 如无请留空 ),有时可以起到一定的作用。

解决方法三:

建立一个php+mysql的简单网站,在服务器监控王的网站监视设置中,让服务器监控王软件定期去访问这个网站(如60秒一次),如果不能访问,说明数据库存在问题,将故障回报至您的邮箱或手机中,让您在第一时间内得知网站访问情况。如果连续几次都不能访问,您可以选择自动重启服务器,从而达到无人值守的状态。

解决方法四:

设定服务器监控王的SQL监视,定期对mysql是否运行进行定期监视,如有问题立即重启或回报。

解决方法五:

对于上面问题中提到某台服务器准时在挂掉,如凌晨5点,产生这样的原因分析可能与当前流行的discuz论坛的自动定时备份有关,因为很多客户定时在凌晨时段自动备份mysql数据库,导致mysql工作忙碌(如有很多的mysql用户),可以建立一个计划任务,定时如早上6时将mysql重启一下。

解决方法六:

更换为非windows主机,运行更少的mysql+PHP网站,当然对于从事虚拟主机业务的运营商来说是一项损失。

首先你要确定网络和端口是否正常,服务器是否正常

然后,看说明

火车采集器(LocoySpider)是一款功能强大且易于上手的专业采集软件,强大的内容采集和数据导入功能能将您采集的任何网页数据发布到远程服务器,自定义用户cms系统模块,不管你的网站是什么系统,都有可能使用上火车头采集器,系统自带的模块文件支持:风讯文章,动易文章,动网论坛,PHPWIND论坛,Discuz论坛,phpcms文章,phparticle文章,LeadBBS论坛,魔力论坛,Dedecms文章,Xydw文章,惊云文章等的模块文件。更多cms模块请自己参照制作修改,也可到官方网站与大家交流制作。 同时您也可以使用系统的数据导出功能,利用系统内置标签,将采集到的数据对应表的字段导出到本地任何一款Access,SQLite,MySql,MS SqlServer内。

火车头采集器2010版相对旧版做了重大改进。添加了许多新功能。同时软件更稳定快速。

火车采集器添加的功能:

1丰富的插件功能:新版中PHP插件和C#插件可以在采网址时,采内容时,采完内容后使用插件,而不限是什么插件同时对对插件开发提供了更加详细的开发手册,可以方便用户实现自己的特殊要求

2任务运行日志:程序将对运行的日志进行保存,方便用户在自动更新时查看采集器的工作情况

3更多的数据保存方式程序可以将数据保存在access,sqlite,mssql,mysql,oracle数据库中,更快的速度,更方便的管理

4更方便的升级及程序对文件目录格式进行了重新设置,用户如果不使用升级程序,只需要复制几个文件夹就可以经松完成升级

5支持可选的加密狗授权方式

6命令行模式可以使用参数启动程序执行任务可以通过计划任务的来实验定时采集,在采集结束后退出程序

7中文分词增加用户词库,可以添加用户排除的词库可以只使用用户词库

8本地采集数据管理里加入了预览功能

9标签可以上下进行排序生成CSV时,就按该排序生成csv文件测试时,返回的结果也以标签的排序进行显示

10和flash下载排除功能对于符合条件的文件不进行下载

11文件上传标签里可以针对多个标签进行文件上传

12采网址部分在使用2级网址时可以设置列表页包含区域

13循环采集时可以使用提取关键字,摘要等功能。

14列表标签可以进行编辑,如排除和过滤,下载等。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何优化 Python 爬虫的速度

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情