python爬虫程序运行失败,求原因


#coding:utf8

from baike_spider import url_manager, html_downloader, html_parser,\

    html_outputer


class SpiderMain(object):

    #构造函数,初始化各个对象

    def __init__(self):

        #url管理器

        self.urls = url_manager.UrlManager()

        #url下载器

        self.downloader = html_downloader.HtmlDownloader()

        #url解析器

        self.parser = html_parser.HtmlParser()

        #url输出器

        self.outputer =html_outputer.HtmlOutputer()

        

    #爬虫的调度程序

    def craw(self, root_url):

        #count记录当前爬取的是第几个url

        count = 1

        #1.首先将入口url添加入管理器

        self.urls.add_new_url(root_url)

        #启动爬虫循环,当管理器中有url时

        while self.urls.has_new_url():

            try:

                #获取一个待爬取的url

                new_url = self.urls.get_new_url()

                print 'craw %d : %s' % (count,new_url)

                #启动下载器下载页面

                html_cont = self.downloader.download(new_url)

                #调用解析器解析页面数据,返回新的url列表和新的数据

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

                #将新的url补充到管理器

                self.urls.add_new_urls(new_urls)

                #收集数据

                self.outputer.collect_data(new_data)

                #爬取1000个目标

                if count == 1000:

                    break

                

                count = count + 1

            except:

                print 'craw failed'

            #输出收集好的数据

            self.outputer.output_html()

        

    

#1.首先编写main函数

if __name__=="_main_":

    #2.编写入口的url

    root_url = "http://baike.baidu.com/view/21087.htm"

    obj_spider = SpiderMain() 

    #3.启动爬虫

    obj_spider.craw(root_url)


weibo_漫河乡_03621568
浏览 2475回答 2
2回答

一颗菠萝

主函数写错了,应该是:if __name__=="__main__":不是:if __name__=="_main_":main前后是双下划线
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python