为了账号安全,请及时绑定邮箱和手机立即绑定

写好了所有的程序运行遇到bug,不知道怎么改

# -*- coding: utf-8 -*-
from baike_moon import  html_downloader, html_parser, html_outputer, url_manager



class SpiderMain(object):
    def __init__(self):
        self.urls = url_manager.UrlManager()
        self.downloader = html_downloader.HtmlDownloader()
        self.parser = html_parser.HtmlParser()
        self.outputer  =html_outputer.HtmlOutputer()
    
    
    def craw(self, root_url):
        count = 1
        self.urls.add_new_url(root_url)
        while self.urls.has_new_url():
            #try:
                new_url = self.urls.get_new_url()
                print 'craw %d:%s' %(count,new_url)
                html_cont = self.downloader.download(new_url)
                new_urls,new_data = self.parser.parse(new_url,html_cont)
                self.urls.add_new_urls(new_urls)
                self.outputer.collect_data(new_data)
                
                if count == 1000:
                    break
                count = count+1
            #except:
           #     print '爬取失败'
         
        self.outputer.output_html()
        

if __name__=="__main__":
    root_url = "http://baike.baidu.com/view/21087.htm"
    obj_spider = SpiderMain()
    obj_spider.craw(root_url)

报错:

pydev_imports.execfile(file, globals, locals)  # execute the script

  File "E:\eclipse python\����\baike_moon\spider_main.py", line 38, in <module>

    obj_spider.craw(root_url)

  File "E:\eclipse python\����\baike_moon\spider_main.py", line 22, in craw

    new_urls,new_data = self.parser.parse(new_url,html_cont)

TypeError: 'set' object is not callable


正在回答

5 回答

我找到我的原因了 在manager里面有字母打错了造成错误 你去查查你的代码是不是有哪儿地方字母打的不对

0 回复 有任何疑惑可以回复我~

同问啊 一模一样的错误 求助啊

0 回复 有任何疑惑可以回复我~


from Spider import url_manager, html_downloader, html_parser, html_outputer

__author__ = 'lenovo1'


class Spidermain(object):
    def __init__(self):
        self.urls = url_manager.UrlManager()
        self.downloader = html_downloader.HtmlDownloader()
        self.parser = html_parser.HtmlParser()
        self.outputer = html_outputer.HtmlOutputer()

    def craw(self, root_url):
        self.urls.add_new_url(root_url)
        while self.urls.has_new_url():
            new_url = self.urls.get_new_url()
            html_cont = self.downloader.download(new_url)
            new_urls, new_data = self.parser.parse(new_url, html_cont)
            self.urls.add_new_urls(new_urls)
            self.outputer.collect_data(new_data)
        self.outputer.output_html()
if __name__ == "__main__":
    root_url = "http://baike.baidu.com/view/21087.htm"
    obj_spider = Spidermain()
    obj_spider.craw(root_url)

代码如图所示,,,

0 回复 有任何疑惑可以回复我~

同问,,不过我的错误是TypeError: 'NoneType' object is not iterable,,,

0 回复 有任何疑惑可以回复我~

看一下html_parser文件有没有加 urlparse 和 re

0 回复 有任何疑惑可以回复我~
#1

终可见丶 提问者

是加了的import urlpaese和re的
2016-03-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Python开发简单爬虫
  • 参与学习       227670    人
  • 解答问题       1219    个

本教程带您解开python爬虫这门神奇技术的面纱

进入课程

写好了所有的程序运行遇到bug,不知道怎么改

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信