为什么这段代码没有在文本文件中写任何东西?

时间:2014-04-08 00:17:58

标签: python urllib2 lxml mechanize

我遇到了这段代码的问题,因为它除了在" f文件"中编写输出外,还可以做任何事情。有人可以帮我这个吗?

问题在于这一行:f.write(博客+'' +权限+' \ n')

        try:
            response = br.open(buyer)
            tree = html.fromstring(response.read())
            blogs = tree.xpath('//div/ul/li[@class="sidebar-item"]/a/@href')
            for blog in blogs:
                if '.blogspot.com' in blog:
                    try:
                        response = br.open(blog)
                    except HTTPError, e:

                        if 'http://www.blogger.com/create-blog.g?defaultSubdomain=' in e.read():
                            try:
                                response = br.open( 'http://www.opensiteexplorer.org/links?site=' + blog )
                            except Exception:
                                response = br.open( 'http://www.opensiteexplorer.org/links?site=' + blog )
                            tree = html.fromstring(response.read())
                            authority = int (tree.xpath('//span[@class="metrics-authority"]/text()')[1].strip())
                            if authority>1:
                                print blog
                                print 'This blog is ready to be registered'
                                print authority
                                f.write(blog +' '+ authority +'\n')
                        else:
                            print ''
        except Exception:
            print ''
print 'Finished'
f.close()

1 个答案:

答案 0 :(得分:2)

问题在于:

当你想要做的时候

f.write(blog +' '+ authority +'\n')

Python正在抛出 ValueError,因为您无法添加intstr 。您还捕获每个例外,这是不明智的。更改有问题的行以将authority转换为str

f.write(blog +' '+ authority +'\n')

你应该没问题。摆脱毯子except子句,只捕获你想要捕获的特定异常。在您开发此代码的过程中,我建议您不要抓住任何异常,这样您就可以知道出现问题的原因。