pyspider的回调函数为什么必须点向右的白色箭头才会执行?

想要实现的功能:爬新闻首页,拿到新闻链接,然后去爬每篇新闻,把爬到的新闻内容插入到monggodb中

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

from pyspider.libs.base_handler import *
from pymongo import *


client = MongoClient()
db = client['result']
col = db['kr']
#col.remove()

class Handler(BaseHandler):
    def on_start(self):
        print '-'*10
        self.crawl('http://36kr.com/news',headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'},fetch_type='js', callback=self.index_page,connect_timeout = 50,timeout = 200)

    def index_page(self, response):
        print '+'*10
        for item in response.doc('div.intro').items():
            print '='*10
            self.crawl(item('h3>a').attr.href, fetch_type='js', callback=self.detail_page)
            
    def detail_page(self, response):
        print '#'*10
        obj = {
            "url": response.url,
            "title": response.doc('title').text(),
            "content": response.doc('section.textblock:first').text()
        }
        col.insert(obj)
        return obj

点击run之后

clipboard.png

然后点向右的白色箭头,

clipboard.png

必须再点白色箭头,detail_page才会执行

clipboard.png

阅读 2.7k
1 个回答

不然怎么叫「单步调试」呢?


要执行到 dashboard 上改状态,点 run

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