2010-12-16 7 views
19

URLを解析して詳細ページにリンクするURLのリストを取得する必要があります。そのページから、そのページからすべての詳細を取得する必要があります。詳細ページのURLが定期的に増分されたり変更されたりしないので、このようにする必要がありますが、イベントリストページは同じままです。基本的にはURLを解析して別のURLデータを取得するスープ。

example.com/events/ 
    <a href="http://example.com/events/1">Event 1</a> 
    <a href="http://example.com/events/2">Event 2</a> 

example.com/events/1 
    ...some detail stuff I need 

example.com/events/2 
    ...some detail stuff I need 
+0

あなたは何を試しましたか?それはなぜ機能しませんでしたか? –

+0

まだ何も試してみませんか?私は詳細ページを解析する方法を知っていますが、リストページを介してデータにアクセスする方法は知りません。 – tim

+5

ええ、うーん、あなたがドキュメントを読んで、少なくとも最初に努力するなら、それは素晴らしいことです。 –

答えて

56
import urllib2 
from BeautifulSoup import BeautifulSoup 

page = urllib2.urlopen('http://yahoo.com').read() 
soup = BeautifulSoup(page) 
soup.prettify() 
for anchor in soup.findAll('a', href=True): 
    print anchor['href'] 

それはあなたのURLのリストを提供します。これらのURLを繰り返し処理してデータを解析することができます。

  • inner_div = soup.findAll("div", {"id": "y-shade"}) これは一例です。あなたはBeautifulSoupチュートリアルを読むことができます。
  • この渡って来る人々の次のグループのために
+0

これはうまくいくようです。結果を特定のdivまたはulに絞り込むことはできますか? – tim

+0

はい.. divを指定できます。このためには、クラスを使用することができます。私はしばらくの間、私の答えを更新しています。 – Tauquir

+0

soup.findAll( 'a'、href = True)のアンカーのために何を工夫できますか? – Ufoguy

3

使用urllib2のもしてみてください、そして、リンクのリストを取得するには、美しいスープを使用して、ページを取得するscraperwiki.com

編集:

最近発見:使用BeautifulSoup through lxml

from lxml.html.soupparser import fromstring 

は、ただBeautifulSoup。それは人生の節約者であるdom.cssselect(あなたのセレクタ)を行うことができます。あなたはBeautifulSoupの良いバージョンがインストールされていることを確認してください。 3.2.1は扱います。

dom = fromstring('<html... ...') 
navigation_links = [a.get('href') for a in htm.cssselect('#navigation a')] 
4

V3は、もはや更新されているとして、BeautifulSoupは、この記事のようV4にアップグレードされていません。..

$ easy_install beautifulsoup4 

$ pip install beautifulsoup4 

Pythonで使用するには...

import bs4 as BeautifulSoup 
+1

また、urllib2でのPythonリクエストの使用をお勧めします。はい、それは非中心的なモジュールですが、あなたはそれを使用することで頭がおかしくなりません。それはコアの一部になることが提案されましたが、最終的にはそれに反して決定されました。 短い紹介 - https://gist.github.com/bradmontgomery/1872970 docs - http://docs.python-requests.org/ja/master/ – disuse

関連する問題