非程序员,只是偶尔喜欢折腾 python,编写非函数式代码。
油漆
-水性金属漆
	-金属防腐涂料
		-金属型涂料
		-车间底漆
		-耐高温涂料
	-防腐底漆
	-水性玻璃漆
-塑胶漆
-调和漆
创建空列表 word =[]
爬虫初始关键词是油漆,采集到了[水性金属漆、塑胶漆、调和漆],传入 word 。
列表内容为 word = ["水性金属漆","塑胶漆","调和漆"]
然后代码从 word 读取"水性金属漆",再传递给爬虫程序,爬取到[金属防腐涂料、防腐底漆、水性玻璃漆、塑料涂料、调和漆] 再传入 word 。
列表因为爬虫程序不断的传关键词进来,代码循环几次后,
列表不断变大,但是每次爬虫只是从中拿出一个数据,如果不人为进行强制中断,是不是人为制造了一个假 死循环。
我目前是初步考虑是用.pop 读删列表中的关键词。
伪代码是:
words = ['油漆','塑胶漆']
if len(words) == 1:
    word = words.pop()
	执行爬虫函数或者代码 
else:
	for i in range(len(words)-1, -1, -1):
        word = words.pop(i)
		执行爬虫函数或者代码
该思路是否可行?
如不行 是否有更优秀的思路(烦请尽量提供伪代码)
|      1xingshu1990 OP 再顶一下,看下有没有人回复。 | 
|  |      2metamask      2021-11-12 13:32:13 +08:00 @xingshu1990 #1  这种爬虫基本遵循 垂直爬取就好。 你不用把它剔除掉,而是做一个新的表单,来验证是否已经爬取过,这个方向又走到了布隆过滤器。 简单做就是,爬过就放到一个列表,爬取前验证是否已经存在过,就不用爬取, 颗粒度做小的时候,就是验证链接,爬取过的链接不再爬。 这样子是属于逻辑上的优化,尽量地能够让代码是直观的 | 
|  |      3metamask      2021-11-12 13:35:52 +08:00 你可以按照这个思路去玩玩看 o 不 ok 设置两个列表,可以设置状态,pending ,processing ,加多个时间 爬取的时候,就只调用 pending 的出来爬, 爬取的时候把状态从 pending 改为 processing 爬取完之后,把 processing 放到新的列表里,作为存留 再做一个定时器,发现 processing 时间超过 N 但还没完成的,重新调为 pending ,或者做对应相关报错处理 |