500lines之crawler学习(四)

经过前面(一)、(二)、(三)的讲解,现在crawler项目能运行了,控制台会打印各种日志信息,由于信息太多,根本看不全(控制台只能显示一部分),所以首要任务是将日志信息输出到文件中(crawl.py):

    logging.basicConfig(filename='crawler.log',
                        format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
                        level=levels[min(args.level, len(levels)-1)])

配置以后,会将控制台的日志信息输出到crawler.log文件中,再次运行程序:

python crawl.py xkcd.com

运行到后面时,控制台会报一个错:

因为现在的session.close()是一个coroutine(协程),所以不能直接调用,而要用协程的方式运行(crawling.py):

def close(self):
        """Close resources."""
        self.loop.run_until_complete(self.session.close())
#        self.session.close()
#        self.loop.close()  可以关闭,但关闭后loop就不能再用了

程序修改到这里,运行基本没有问题了,但是怎么查看抓取的结果呢?比如说我请求了多少个网页,请求失败了多少网页?在crawl.py中默认通过

crawl.py:100行:             reporting.report(crawler)

上面代码将抓取的结果形成一个报告,打印到控制台。因为信息很多,所以我们在控制台也只能看见一少部分,这显然不是我们想要的结果。我们需要将打印报告输出到文件中(crawl.py):

f = open("report.txt","w")
reporting.report(crawler,file=f)
f.close()
crawler.close()

上面代码会将结果报告输出到report.txt文件中。

至此,crawler.py项目已经跑得顺畅了,走到这一步并不容易,基本都是在改bug(主要是python更新快,API使用有些变化所致)。先把完整的代码放出来,下一步将开始完善相关功能。

500lines之crawler(python3.7改进版)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值