爬虫框架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