0

lxml または mechanizer を使用して美しいスープをすべて切り取ることで、このスクリプトの速度を向上させる方法はありますか?

パイソン:

import lxml.html as html
import urllib
import urlparse
from BeautifulSoup import BeautifulSoup
import re
import os, sys
print ("downloading and parsing bibles...")
root = html.parse(open('all.html'))
for link in root.findall('//a'):
  url = link.get('href')
  name = urlparse.urlparse(url).path.split('/')[-1]
  dirname = urlparse.urlparse(url).path.split('.')[-1]
  f = urllib.urlopen(url)
  s = f.read()
  if (os.path.isdir(dirname) == 0): 
    os.mkdir(dirname)
  soup = BeautifulSoup(s)
  articleTag = soup.html.body.article
  converted = str(articleTag)
  full_path = os.path.join(dirname, name)
  open(full_path, 'w').write(converted)
  print(name)
print("downloads complete!")

all.html

<a href="http://www.youversion.com/bible/gen.1.nmv-fas">http://www.youversion.com/bible/gen.1.nmv-fas</a>

<a href="http://www.youversion.com/bible/gen.2.nmv-fas">http://www.youversion.com/bible/gen.2.nmv-fas</a>

<a href="http://www.youversion.com/bible/gen.3.nmv-fas">http://www.youversion.com/bible/gen.3.nmv-fas</a>
4

1 に答える 1

1

スクリプトで実際に時間がかかる部分を測定することから始める必要があります。遅くないものを最適化するのは時間の無駄です。

おそらく解析ではなくダウンロードです。その場合、パーサーを切り替えても役に立ちません。スレッド (ダウンロードごとに 1 つ) を使用して多くのファイルのダウンロードを高速化すると、最初のダウンロードが完了する前に別のダウンロードを開始できるため、役立つ場合があります。

于 2012-04-25T19:00:09.837 に答える