0

編集: 明確にするために、私は python を使用しており、これを python 内で実行したいと考えています。

私は大学で研究プロジェクトのためにデータを収集している最中です。基本的に、欧州議会を監視している Web サイトから多くの情報を収集する必要があります。あるサイトの URL がどのように見えるかの例を次に示します。

http://www.europarl.europa.eu/sides/getDoc.do?type=REPORT&mode=XML&reference=A7-2010-0190&language=EN

アドレスの参照部分の後の数字は、A7 = 会期中の議会 (以前の議会は A6 など)、2010 = 年、0190 = ファイルの番号を示します。

私がやりたいことは、さまざまな議会のすべての URL を持つ変数を作成することです。これにより、この変数をループして、Web サイトから情報をスクレイピングできます。

PS:私はこれを試しました:

number = range(1,190,1) 

   for i in number: 
       search_url = "http://www.europarl.europa.eu/sides/getDoc.do?type=REPORT&mode=XML&reference=A7-2010-" + str(number[i]) +"&language=EN" 

      results = search_url 
      print results

しかし、これは私に次のエラーを与えます: Traceback (most recent call last): File "", line 7, in IndexError: list index out of range

4

4 に答える 4

1

python と wget を使用できますか? 存在するセッションをループし、wget? に渡す文字列を作成します。それともやり過ぎですか?

于 2010-06-30T15:18:56.400 に答える
1

私の理解が正しければ、議会をループできるようにしたいだけですか?

つまり、A7、A6、A5... が必要ですか?

それが必要な場合は、単純なループで処理できます。

for p in xrange(7,0, -1):
    parliment = "A%d" % p
    print p

他の値については、同様のループが同様に機能します。

for year in xrange(2010, 2000, -1):
    print year

for filenum in xrange(100,200):
    fnum = "%.4d" % filenum
    print fnum

ループを適切な順序で簡単にネストして、必要な組み合わせを生成できます。チッ!

編集:

文字列の書式設定は非常に便利です。例でそれを行う方法は次のとおりです。

# Just create a string with the format specifier in it: %.4d - a [d]ecimal with a
# precision/width of 4 - so instead of 3 you'll get 0003
search_url = "http://www.europarl.europa.eu/sides/getDoc.do?type=REPORT&mode=XML&reference=A7-2010-%.4d&language=EN"

# This creates a Python generator. They're super powerful and fun to use,
# and you can iterate over them, just like a collection.
# 1 is the default step, so no need for it in this case
for number in xrange(1,190):   
    print search_url % number

文字列の書式設定では、さまざまな指定子を含む文字列を使用します。それらには % が含まれているのでわかります。その後に % と、書式文字列への引数を含むタプルが続きます。

年と議会を追加する場合は、文字列を次のように変更します。 search_url = "http://www.europarl.europa.eu/sides/getDoc.do?type=REPORT&mode=XML&reference=A%d-%d-%.4d&language=EN"

重要な変更点は次のとおりです: reference=A %d- %d- %.4d&language=EN

つまり、次のように小数点以下 3 桁を渡す必要があります。

print search_url % (parliment, year, number)

于 2010-06-30T15:30:10.680 に答える
1

申し訳ありませんが、これをコメントとして与えることはできませんが、まだ十分なスコアがありません.

上記のコメントで引用したコードを見ると、問題は文字列と整数を追加しようとしていることです。一部の言語はオンザフライ変換を行いますが (機能する場合は便利ですが、機能しない場合は混乱を招きます)、 で明示的に変換する必要がありstr()ます。

次のようになります。

"http://firstpartofurl" + str(number[i]) + "restofurl"

または、文字列の書式設定を使用できます ( %Wayne の回答として etc を使用)。

于 2010-06-30T16:39:11.487 に答える
0

セレンを使用。リアルブラウザで制御するため、複雑なjavascriptを使ったサイトも扱えます。Python を含む多くの言語バインディングが利用可能です。

于 2010-06-30T15:23:15.970 に答える