0

FINDALL を使用してすべての特定の Web ページを取得し、それらを配列に渡す必要がありますが、引用符のないリンクだけです。配列ではない場合、使用できるループ内の個々のリンクに変数を渡すことができます。それらを1つずつ、または一度にすべて

#!/usr/bin/env python
import re,urllib,urllib2

Url = "http://www.ihiphopmusic.com/music"
print Url
print 'test .............'
req = urllib2.Request(Url)
print "1"
response = urllib2.urlopen(req)
print "2"
#reads the webpage
the_webpage = response.read()
#grabs the title
the_list = re.findall(r'number-link" href="(.*?)#comments">0</a>',the_webpage)
print "3"
the_list = the_list.split(',')
arrlist = array('c',the_list)
print arrlist

結果

http://www.ihiphopmusic.com/music
test .............
1
2
3
Traceback (most recent call last):
  File "grub.py", line 17, in <module>
    the_list = the_list.split(',')
AttributeError: 'list' object has no attribute 'split'
4

3 に答える 3

0

私が収集できるものから(間違っている場合は修正してください)、あなたはすでにそこにいます:) @mgilsonが指摘しているように、それはすでにリストです:

#grabs the title
the_list = re.findall(r'number-link" href="(.*?)#comments">0</a>',the_webpage)
print "3"
print type(the_list)
print the_list

したがって、それを繰り返して、必要なことを行うことができます。

for item in the_list:
    print item
于 2012-08-15T16:32:06.693 に答える
0

'split' は、リスト オブジェクトではなく、文字列オブジェクトの属性です。リストで分割を使用しようとすると、AttributeError が発生します。the_list を印刷すると、それがすでにリストであることがわかります。リストを分割して各 URL を別々の行に表示する場合は、 を使用できますprint '\n'.join(the_list)

于 2012-08-15T16:37:41.347 に答える
0

re.findall重複しない一致のリストを返します。リストを分割しようとしているため、 AttributeError (listオブジェクトにはsplitメソッドがありません) が発生しています。あなたがそれによって何を達成しようとしているのか正確にはわかりません。個々の一致を分割し、それらを iterable に保存しますか? もしそうなら、あなたは次のようなことができます:

import itertools
results = itertools.chain(*[x.split(',') for x in the_list])
于 2012-08-15T16:26:41.160 に答える