pyspider为什么能实现url爬取多条数据吗?

据说on_message可以,但我测试了还是不行,有什么方法能实现吗?

def detail_page(self, response):
    results = json.loads(response.text)
    for result in results:
        date = result['date']
        number = response.url[6:]
        self.send_message(self.project_name, {
            "number": number,
            "date":date,
         }, url="%s#%s" % (response.url, date))
 
def on_message(self, project, msg):
    print msg
    return msg
阅读 3k
2 个回答

detail_page可以返回一个列表,然后在on_result处理的时候,当列表处理就行。
你这个代码没什么问题,问题没有出在这里。还有测试的时候并不会调用on_message,测试的send_message发送的消息给了左侧的message里面。只有项目运行的时候才会调用on_message.

我在刚接触的时候没有注意url去重的问题,导致没有结果。如果要抓取相同的url,需要修改url比如加入锚点(#tag),这样才会重新抓取。希望后面学习的人注意这个问题。
你的也有可能是这个原因

代码没看出来问题,估计你是在webUI 手动调试不出结果,run 起来就能看到了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题