报错---SyntaxError: invalid syntax,实在无奈,找了几天还没找出原因
#环境是eclipse,python3.5 #spider_main # coding: utf-8 from baike_python import html_downloader, url_manager, html_parser, html_outputer class SpiderMain(object): def __init__(self):#构造方法 self.urls = url_manager.UrlManager()#初始化URL管理器 self.downloader = html_downloader.HtmlDownloader()#初始化网页下载器 self.parser = html_parser.HtmlParser()#初始化网页解析器 self.outputer = html_outputer.HtmlOutputer()#初始化输出器 def craw(self, root_url):#开始执行爬虫的方法 count = 1#计数器,计数爬取页面的总数量 count2 = 0#计数器,计数爬取失败的网页个数 self.urls.add_new_url(root_url)#传入网页入口 while self.urls.has_new_url():#对网页内包括的连接网页循环抓取,先判断URL管理器不空 try:#有些页面可能失效了,要有异常处理 new_url = self.urls.get_new_url()#获取URL管理器中的一个URL print ("craw %d : %s \n"%(count,new_url)#打印当前爬去的页面 html_cont = self.downloader.download(new_url) new_urls, new_data = self.parser.parse(new_url,html_cont)#把页面解析为新连接和网页数据两部分,其中new_data 中含有当页的链接、title和summary,new_url是当前页面中的所有链接的集合 print (new_data["title"]+"\n", new_data["summary"]) self.urls.add_new_urls(new_urls)#新链接存入URL管理器 self.outputer.collect_data(new_data)#网页数据收集 if count == 10:#控制打印页面的数量 break count = count+1 except Exception,e: count2 = count2+1 print('e') print ("craw failed") self.outputer.output_html() print (str(count-count2)+" successful,"," while "+str(count2)+" failed ") if __name__=="__main__": #主函数 root_url = "http://baike.baidu.com/view/21087.htm" #入口页 obj_spider = SpiderMain()#创建对象 obj_spider.craw(root_url)#启动爬虫
#html_downloader
import urllib class HtmlDownloader(object): def download(self,url): if url is None: return None #request = urllib2.Request(url) response = urllib.request.urlopen(url) if response.getcode() != 200: return None return response.read().decode('utf-8')
感谢查看,找bug真的烦= =