happydescant 发表于 2011-7-10 08:46:48

post分页的问题

求助原帖地址 http://bbs.locoy.com/spider-63092-1-1.html
http://www.anccnet.com/productlist.aspx?f_id=F25F56A9F703ED74C88AA64403D14BE99A38FE6393D043674E6F04046E3A5C66

这是某个我要采集的页面,我要采集里面的每个商品的5项信息。这个已经做好了。

我的问题是,类似这样的要采集的页面有很多,而每个页面都是post方式采集,分页标签要设置不同的页数。
假如我有10万个这样要采集的页面,是不是只能是设置10万个采集页面了?

今天我想到一个问题,分页为什么需要设置呢?我想能不能这样,假如原来采集1-10页,设置1和10,现在10的位置可以空着,表示无限继续采集下去,当遇到最后一页采集为空的时候,也就是说没有这页,这时候停止采集,如果想就采集到多少页,那就设置多少页。这样可以吗?

因为我要采集的这个网站有搜索次数限制,所以如果分页这是1-1000来达到都采集,会很麻烦,而且有些只有1页,设置太多页面也浪费。

火车头 发表于 2011-7-11 08:37:35

还只有通过设置页数来解决,您说的通过最后一页留空的办法很好,但实际操作会出现最后一页变化情况不明显,比如并非404而显示自定义的信息,或跳转到其他页显示,或者如百度的搜索不管分页多大结果 长期显示最后一页。

happydescant 发表于 2011-7-11 09:29:34

本帖最后由 happydescant 于 2011-7-11 15:10 编辑

是的,我也想到了,这个问题。根据采集的情况,只能出现多种情况中的一种情况。那么就可以设置遇到这种情况停止。

如果显示自定义信息,可以通过设置到“指定信息”止。
如果最后一页显示信息是不变的,可以设置最后一条信息重复止。就是保留当次采集最后一条信息的某个标签,如果下一页这个标签相同,则说明这一页重复了,停止。
还有最多的情况应该是采集不到信息吧。停止。这个最简单了,先支持这个吧

happydescant 发表于 2011-7-11 11:27:01

还有我的解决方法。

如果按照下面这样做可以吗?外部程序能让火车头开始采集吗? 有人能做一个这样通用的软件吗?

      设置字段 地址 上次总页数 总页数 完成

      假定要运行的任务为“任务A”
1      从“地址”中读取一条地址,“完成”标记=未执行
2      数据库Config,表job,jobname=“任务A”,PostPapeEnd=1,
3      运行任务
4      等待任务停止
5      查看数据库SpiderResult,content表,总页数字段(下面实际举例)
6      记录总页数=78,上次总页数为空,所以本次采集所有页面,PostPapeEnd=78,上次总页数也记录为78
7      执行 3
8      第二遍,若总页数为78,上次总页数也为78,则执行 1 ,
9      如果总页数=78,上次总页数=77,则PostPapeEnd=差值+1=2,执行3

lbjyuer 发表于 2016-2-8 17:03:37

历史帖子回顾中。
页: [1]
查看完整版本: post分页的问题