web-dev-qa-db-ja.com

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
25
tim
_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チュートリアルをご覧ください。
64
Tauquir

これに出くわす次のグループについては、v3が更新されなくなったため、BeautifulSoupはこの投稿の時点でv4にアップグレードされました。

$ easy_install beautifulsoup4

$ pip install beautifulsoup4

Pythonで使用するには...

import bs4 as BeautifulSoup
5
disuse

Urllib2を使用してページを取得し、美しいスープを使用してリンクのリストを取得します。また、scraperwiki.comを試してください。

編集:

最近の発見:lxmlでBeautifulSoupを使用して

from lxml.html.soupparser import fromstring

beautifulSoupよりもはるかに優れています。これにより、命を救うdom.cssselect( 'your selector')を実行できます。良いバージョンのBeautifulSoupがインストールされていることを確認してください。 3.2.1はおやつです。

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