情形:
现有一个固定格式的、大约 700w 条数据的 URL ,如 "http://example/item/%d" % (i)
我不想生成一个这么大的列表。最科学的方法应该是弄成一个生成器,生成 1000 个 url , yield 出来,再生成 1000 个...直到一直把活干完。
不知道 PySpider 怎样重写这个 url 。查看文档和源码,发现是用 BaseHandler 的 crawl 方法,读取一个 url 列表。
我现在想实现:
不知有没有老大有经验?
def urls(self):
i=1
while i<7000000:
yield "http://example/item/%d" % (i)
i += 1
@every(minutes=24 * 60)
def on_start(self):
self.crawl(self.urls(), callback=self.index_page)
1
binux 2016-08-31 06:23:11 +08:00 1
```
def on_start(self): for i in range(10000): self.crawl('data:,step%d' % i, callback=self.gen_url, save=i) @config(priority=0) def gen_url(self, respond): for i in range(respond.save * 700, (respond.save + 1) * 700): self.crawl("http://example/item/%d" % i, callback=self.parse_page) @config(priority=1) def parse_page(self, respond): pass ``` |
2
PythonAnswer OP |
3
binux 2016-08-31 08:29:38 +08:00 1
@PythonAnswer 接着 self.crawl 提交就好了啊
|
4
PythonAnswer OP 多谢,我继续研究一下吧。认真看源码,发掘各种功能。
非常好用的软件~ |
5
figofuture 2016-08-31 09:53:43 +08:00
mark
|
6
ddzzhen 2018-12-29 09:55:50 +08:00
mark 很好的使用方法
|