Python脚本超时或无法完成运行

时间:2018-02-12 16:18:28

标签: python regex python-2.7 web-scraping

我一直在研究一个会刮掉某些网​​页的python脚本。

脚本的开头如下所示:

# -*- coding: UTF-8 -*-
import urllib2
import re

database = ''

contents = open('contents.html', 'r')

for line in contents:
    entry = ''
    f = re.search('(?<=a href=")(.+?)(?=\.htm)', line)
    if f:
        entry = f.group(0)  

        page = urllib2.urlopen('https://indo-european.info/pokorny-etymological-dictionary/' + entry + '.htm').read()

        m = re.search('English meaning(&#160;)+\s+(.+?)</font>', page)
        if m:
            title = m.group(2)
        else:
            title = 'N/A'

这会访问每个页面并从中获取标题。然后我有许多代码块来测试每个页面中是否存在某些文本,这是一个例子:

    abg = re.findall('\babg\b', page);
        if len(abg) == 0:
            abg = 'N'
        else:
            abg = 'Y'

然后,最后,仍然在for循环中,我将此信息添加到变量数据库:

    database += '\n' + str('<F>') + str(entry) + '<TITLE="' + str(title) + '"><FQ="N"><SQ="N"><ABG="' + str(abg) + '"></F>'

请注意,我已经为每个变量使用了str(),因为我得到了一个&#34;不能连接字符串和列表&#34;出于某种原因出错。

完成for循环后,我将数据库变量写入文件:

f = open('database.txt', 'wb')      
f.write(database)
f.close()

当我在命令行中运行它时,它会超时或永远不会完成运行。关于可能导致问题的任何想法?

编辑:我修好了。由于我正在使用数据库变量存储每行重复循环的结果,所以程序似乎变得越来越慢。我必须做的就是解决问题,就是在for循环期间改变写入函数。

0 个答案:

没有答案