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

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,369评论 19 139
  • 走出隘口 就走出忧愁 走出苦难的执着 无助的认真 在雨中滑落 先别掰开 岩角上的手指 也许悬崖挂壁 风吹干了 树叶...
    凹丁阅读 1,540评论 1 3
  • 图画本
    华琴阅读 1,605评论 0 0