2012-04-26 44 views
2

最初にページからすべてのリンクを取得しようとしていますが、「次へ」ボタンのURLを取得して、ページがなくなるまでループしています。しかし、何らかの理由でBeautifulSoupが2番目のページを解析することはありません。最初のものだけを停止してから停止します。Python BeautifulSoup - 複数のページをループする

難解ですが、ここではコードを分かりやすくする必要があります説明しようとしているもの:

#this site holds the first page that it should start looping on.. from this page i want to reach page 2, 3, etc. 
    webpage = urlopen('www.first-page-with-urls-and-next-button.com').read() 

soup = BeautifulSoup(webpage) 

for tag in soup.findAll('a', { "class" : "next" }): 

    print tag['href'] 
    print "\n--------------------\n" 


#next button is relative url so append it to main-url.com 
    soup = BeautifulSoup('http://www.main-url.com/'+ re.sub(r'\s', '', tag['href'])) 

#for some reason this variable only holds the tag['href'] 
    print soup 

    for taggen in soup.findAll('a', { "class" : "homepage target-blank" }): 
     print tag['href'] 

     # Read page found 
     sidan = urlopen(taggen['href']).read() 

# get title 
     Titeln = re.findall(patFinderTitle, sidan) 

     print Titeln 

アイデアはありますか?英語が苦手な方には申し訳ありませんが、私は叩かれないことを願っています:)私はそれを貧乏人に説明したかどうか尋ねて、もう少し説明するために全力を尽くします。ああ、私はPythonを初めて使っています。(あなたが想像したように)

+0

が、 BeatifulSoup()をURLに直接渡す時間? – larsks

答えて

2

新しいURLにurlopenを呼び出し、結果のファイルオブジェクトをBeatifulSoupに渡すと、あなたはすべて設定されると思います。つまり:ラインについては

wepage = urlopen(http://www.main-url.com/'+ re.sub(r'\s', '', tag['href'])) 
soup = BeautifulSoup(webpage) 
+0

ありがとう!そのページを読み込もうとしていませんが、英語以外の文字のunicodeerror原因があります.hmm: – user1213488

+0

UnicodeError:URL u'http://www.main-url.com//bilf%C3%B6rs%C3%A4ljning/ f \ xf6retag/3 'にはASCII以外の文字が含まれています – user1213488

+0

私はそれが助けてうれしいです!しばらくお待ちいただいている場合は、この回答の左側にあるチェックマークをチェックして、受け入れられた回答としてマークしてください。 Unicodeエラーに関する新しい質問を開きたいと思うかもしれません。実際のURLを質問に含めることで、データを自分で見ることができます。また、Pythonと対応するコード行から完全なトレースバックを表示するようにしてください。がんばろう! – larsks

0

soup = BeautifulSoup('http://www.main-url.com/'+ re.sub(r'\s', '', tag['href']))

試してください:あなたが初めてurlopen` `呼び出すのはなぜ

webpage = urlopen('http://www.main-url.com/'+re.sub(r'\s','',tag['href'])).read()

soup = BeautifulSoup(webpage)

+0

それは私が言ったことはかなりです... – larsks

+0

@larsks - はい、私は知っている、私たちはお互いの1分以内に答えボタンをクリックしたので、私はあなたの答えを見ていない –

関連する問題