有一个逻辑关系前辈们指点一下。

小马佩德罗 发布于 2015/03/10 01:06
阅读 2K+
收藏 2

我写了一个套采集,采集站酷的新闻

都写好了,但是遇到点问题

但是因为里面的图片我转存到我的服务器(站酷做了防盗链,准备买阿里云好点的服务器,不限流量,所以我索性就给直接全拿来了,转存到本地,然后修改img里面的链接,剔除多余的标签)...

因此我这个服务器经常采集的时候超时,在appache里是超时,在nginx里面是崩溃,appache环境是php5.3,nginx是php5.6,框架我用ThinkPHP写的,一次采集站酷的一页 16条,然后根据这16条数据进内页采集详细文章,文字存入数据库,图片转到本地的文件夹。

大约采集到第八条的时候就30秒超时了,就程序中断了,这个我需要怎么处理呢?

编程没学多久,一直开源里的前辈就是老师,请大家不吝赐教,要是采集8条,可是那个标签里面有16条,我该怎么分开两拨进行采集呢?或者那个30s超时怎么处理一下呢。。早上9点开始上班 晚上6点下班 吃个饭之后一直写写到现在,脑袋里都是浆糊了,思路不清晰,睡觉之前求个助吧。。。

现在的逻辑关系是:

打开一个列表页,采集“标题”“缩略图”“超链接”  然后根据超链接进入内页,采集内页的文章,文章里面的图片名称不变,转化为jpg转存到本地,然后修改文章里面的图片地址,清空其他的所有标签,标题存到文章表里,content存到文章表里(ONEthink自身的表结构),缩略图存到图片表里。

然后运行到一半的时候就超时了,屡试不爽。。

最后问题也别白问,给大家推荐一个挺好的电视剧《平凡的世界》   不错,男一儿子出生那段他快把我弄哭了,原来发现自己已经到了当父亲的年龄却还迟迟不作为。。。



以下是话题补充:

@小马佩德罗:程序已经写好了,现在的问题是采集里面所有的防盗链图片转存到本地,替换文章内图片链接,剔除标签,都写好了,只是一页采集16条数据会造成30s超时,只能采到第八条,这种情况下应该用一个怎么样的逻辑去解决问题,本身我就很菜,至于适不适合干这行,当初是OSC的大伙给我加油我入的行,今天也不是一两个喷子就能喷转行的,我只能说,我没惹您,装逼自重,人家红薯,野鬼,船老大哪个不是大神,我怎么就没见人家跟你们似得脚翘到天上去了? 看好标题,“前辈”两个字,说明我就一菜鸟。你不是从菜鸟玩过来的?你开车刚开始离合都踩不好的时候会开车的叫你滚一边走路去,说你不适合开车,转行赶马车?装逼的大爷,面对技术不如您的,请您自重一点。。 (2015/03/10 13:13)
加载中
1
songtzu
songtzu

转行是比较好的建议。

采个小数据,完全简单的没谱的事情需要问?

小马佩德罗
小马佩德罗
回复 @songtzu : 基础不错,您是我老师,不过现在我问的不是这个
songtzu
songtzu
回复 @于让 : http爬一下数据,正则式匹配一下,数据库写记录。无非是可能有多线程问题。一点难度都没有。
小马佩德罗
小马佩德罗
如果您认为这个仅仅是采集一个小数据,您当我这问题没问
1
ArEs_BB
ArEs_BB

nginx崩溃 去查查错误日志有没有线索?

用单纯的代码爬一下 看看是不是网站做了限制

小马佩德罗
小马佩德罗
加了一些,真心不崩溃了。。一直没有看日志的习惯。多谢指导
小马佩德罗
小马佩德罗
单纯爬没有任何问题,日志里面是这句:[error] 5668#6252: *1320 WSARecv() failed (10054: An existing connection was forcibly closed by the remote host)。。我查了一下,说需要增加fast-cgi进程数。我去试试,谢啦
1
fly2xiang
fly2xiang
你的问题有很多错别字,我大概理解是这样的不知道对不对:第一步首先采集列表页,然后列表页抓下来之后再解析HTML中的每一篇文章,第二步采集每一篇文章内容。而这些操作是在同一次PHP请求中进行。你说的30s超时应该是PHP配置php.ini中max_execution_time设置的PHP执行时间,可以用set_time_limit函数修改限制。建议多看PHP文档,学会使用搜索引擎将错误信息放到搜索引擎中搜索解决方案。另外提问题时表述要明确、 不要有错别字。
小马佩德罗
小马佩德罗
回复 @fly2xiang : 你这么一说忽然感觉明白了点什么东西。。我去试试。我换了输入法,力求没错字。。
fly2xiang
fly2xiang
回复 @于让 : 简单的你可以将链接存下来慢慢采集
小马佩德罗
小马佩德罗
就是这样的,好吧,下次我注意不写错别字。除了调超时时间,有没有其他的方法啊,其实我就是记得我当时看了有的人写的采集能一条一条的采。。可是匹配出来的<a>标签里面直接就是48个,还得过滤一遍剩下16个。。我就想着要是把这16个再进行分组,比如分成三组,采完一组在页面给个响应然后再采集下一组,这样会不会服务器压力小很多
1
be-quiet
be-quiet

配置php的运行时间。

还有一个就是采集做标记,然后定时执行采集。 

1
waitliu
waitliu
1.把采集任务切成无数个短任务,不要超过30完成不了的。

2.采集任务用命令行跑,不要用web容器跑。

0
淡定的wo
淡定的wo
虽然不认可你的采集别人网站的做法。但是要说的是,你这样的问题除了你自己别人没法帮你。提问要提到点子上(比如,哪行代码超时,具体代码?),而不是像现在这样。建议,自己调试代码,调试代码是基本技能。
淡定的wo
淡定的wo
回复 @于让 : 你看其他人提问涉及复杂的问题,是不是贴了代码出来的?你仅仅用文字描述是不足够的。
小马佩德罗
小马佩德罗
有备明出处的。
0
月上柳梢
月上柳梢
月上柳梢
@于让 不过我还是觉得秀莲不错
小马佩德罗
小马佩德罗
觉得挺赞的。佟丽娅就是我那时候认为润叶的样子
0
lossDream
lossDream
平凡的世界是路遥写的小说改编成的电视剧吗?
lossDream
lossDream
回复 @星爷 : 这个值得看看啊,最近才看完的小说
星爷
星爷
en
0
宇宙大将军
同意二楼,可能你不适合这一行,外面的世界更广阔!
小马佩德罗
小马佩德罗
我只是跟很多“行内人”比起来我不善于装逼而已。。
0
songtzu
songtzu
兄台脾气很火爆。

人家红薯是osc的boss,他可能会从你的角度建议你转行么?不可能。你在一条道碰到黑关他屁事。他的钱照赚。很多人基础不够,偏一头扎进来(可能是就业所迫)。加上可能性格不适合这行,例如不热爱自己学习更新充电,工作十年和别人两年一个屌样。年纪一大,何去何从?

我觉得我的话很中肯,好像刺痛了你的心?

你这种满是业务逻辑的问题本来就难以回答,而你提问全是含糊且带错别字的文字描述,叫人怎么回答?UML不会,画图板总会用?截图工具总会用?

小马佩德罗
小马佩德罗
兄台低调一点吧,脾气火不火爆暂且不论,对于男人来说,内涵总是需要有一点的。不用到处秀下限,我在论坛上从来不跟别人吵架,我也不和您争,您说怎么样就怎么样吧
返回顶部
顶部