Python

爬虫框架pyspider踩坑总结,不定时更新...

2018-11-29  本文已影响60人  火柴菌

self.crawl()方法只抓取一次,之后多次run还是不抓取

解决方法:

1,添加@config(age=1)到callback函数: age为1代表1s内如果请求相同的url,则忽略抓取;
2,为抓取的url添加: #随机字符(这里使用uuid库生成随机ID);
为每个url添加#随机字符可以保证每条请求url的地址都不一样,#随机字符 不影响原url的抓取;
3,添加itag标签,itag也需要随机生成,保证每个itag都跟上一个不一样;

class Handler(BaseHandler):
    crawl_config = {
    }

    @every(minutes=60)
    def on_start(self):
        random_str = uuid.uuid4()
        itag = 'xxx' # 每次请求的itag都要跟上一个不一样
        url = 'https://www.baidu.com#{}'.formate(random_str)
        self.crawl(
                    url,
                    headers=headers,
                    callback=self.parse_data,
                    save={
                        'headers': headers,
                        'itag': itag,
                    }
                )

    @config(age=1)
    def parse_data(self, response):
        pass
上一篇下一篇

猜你喜欢

热点阅读