2016-04-25 23 views
2

この質問は、段階的な割り当てに関係しています。課題では、Webページを取得し、htmlアドレスを検索し、アドレスに移動し、別のアドレスを検索し、そのアドレスに移動して、n回ループします。 私のコードがURLをロードしていない理由について、何らかの洞察をしたいと思います。私は間違っていることを理解したいが、必ずしも答えを与えられるとは限らない。 私はこれに完全に新しいですが、すぐに執拗になりつつあります。 この質問がこのフォーラムの形式と範囲の両方で適切であることを願っています。BeautifulSup Python 2.7スクリプトからURLを読み込む際の問題

クラスは、Python 2.7、BeautifulSoup 3、およびurllibは、

MAIN QUESTIONが必要です。私が格納されたURL "のURLは=" 間違っ タイプであることを考えるのが正しい道の上アムurllibのために?ライン87、185、1077によるオブジェクト型の問題に(これは右の単語がある場合はわからない)が解析不能であることを示唆しているurllib.pyの行に

トレースバックポイント。試合での文字列の

 Traceback (most recent call last): 
     File "12-4test.py", line 17, in <module> 
      html = urllib.urlopen(url).read() 
     File "/usr/lib/python2.7/urllib.py", line 87, in urlopen 
      return opener.open(url) 
     File "/usr/lib/python2.7/urllib.py", line 185, in open 
      fullurl = unwrap(toBytes(fullurl)) 
     File "/usr/lib/python2.7/urllib.py", line 1077, in unwrap 
      url = url.strip() 
     AttributeError: 'list' object has no attribute 'strip' 
+1

あなたのコードに従う実際のスニペットをコピーして、あなたのコメントコメントを作ることは困難です。 – vittore

+0

まず、この質問に答える時間をとった皆さんに感謝します。私はその提案を試して結果を得るつもりです。私はそれが段階的な割り当てであるためにあまりにも多くのコードを投稿することには消極的でした。 –

+0

もう一度私は非常に感謝したいと思います。あいまいさのいくつかの領域がなくなりました。私が心配していたことを尋ねなかった質問に答えます。実現は面白くても報いるプロセスです。 –

答えて

0

re.findallを返すリスト:

  url = ('http://some.known.website.html') 
     # Then get web-page: 
     html = urllib.urlopen(url).read() 
     # I use a "for" loop to iterate through the "tags": 
     for tag in tags: 
      # Then convert to string: 
      urlname = str(tag) 
      # Extract url with findall: 
      url = re.findall('href="(http://.*)"',urlname) 
      # load new "url" by looping back: 
      html = urllib.urlopen(url).read() 

      # This is the contents of "url" (obfuscated) as printed 
      # to the terminal by a "print 'URL : ',url" staement: 
      URL : ['http://some.website.html'] 

これはエラーメッセージです:

は私が始まります。あなたはそれを反復処理する必要がありますがurllib.urlopen

urls = re.findall('href="(http://.*)"',urlname) 
for url in urls: 
    html = urllib.urlopen(url).read() 

または

pages = [urlib.urlopen(url).read() for url in urls] 
0

に渡すことができ、実際のURLを取得するために、実際の問題は、URLを抽出するために正規表現を使用する必要がないことです。 BeautifulSoupさんTag objects allow a dictionary-like access to element attributes

for tag in tags: 
    url = tag.get("href") 
    print(url) 
+0

これは機能しました。ありがとうございました。私は他の人が提案したバリエーションを試してみます。私は大文字小文字や一重引用符を使わずにURLを印刷していることに気づいた。 –

関連する問題