0

リストからいくつかのファイルにアイテムを書き込もうとしています。各ファイルに日付に従って名前を付けたいと思います。HTMLをスクレイプするために正規表現を使用するべきではないことを私は知っていることを覚えておいてください、しかし当分の間それは私にうまく役立ちます。無知を失礼しますが、私は初心者です。このスクレイピングは学術目的のみです。前もって感謝します。

    from urllib import urlopen
    import re

    webpage = urlopen('x').read()
    date = re.compile('[0-9]{2}-[a-zA-Z]{3}-[0-9]{4}')
    article =  re.compile('<span>.*<div>', re.DOTALL)
    findDate = re.findall(patFinderDate,webpage)
    findArticle = re.findall(patFinderArticle,webpage)

    listIterator = []
    listIterator[:] = range(0,1000)

    for i in listIterator:
        filename = findDate[i]
        with open(filename,"w") as f:
            f.write(i)
            f.close()
4

1 に答える 1

1

記事と同じ数の日付があることが確実な場合は、コードを次のように大まかに書き直すことができます。

from urllib import urlopen
import re

webpage = urlopen('x').read()
date_p = re.compile('[0-9]{2}-[a-zA-Z]{3}-[0-9]{4}')
article_p =  re.compile('<span>.*<div>', re.DOTALL)
allDates = re.findall(date_p,webpage)
allArticles = re.findall(article_p,webpage)

for date, article in zip(allDates, allArticles):
    with open(date,"w") as f:
        f.write(article)

このzip()関数は、2 つの iterable を 1 つにまとめて「圧縮」し、反復ごとに 2 タプルを返します。これが、記事と同じ数の日付があるかどうかを確認する必要がある理由です。

于 2012-09-19T18:31:30.920 に答える