bookshelf is implemented by scrapy, but it uses too much memory, so I re-implement another by base python code.