2011-01-08 10 views
1

私は別のサイトからいくつかのコンテンツを取り壊そうとしています。なぜBeautifulSoupがこの出力を生成しているのかわかりません。マッチの中に空白スペースしか見つけられませんが、実際のHTMLには大量のマークアップが含まれています。これが私の愚かなことであれば謝ります。私はPythonの初心者です。あなたが続く場合は、sitesDivを見ることができるURLをマークアップの多くが含まれていBeautifulSoup Parser Confusion - HTML

import sys 
import os 
import mechanize 
import re 
from BeautifulSoup import BeautifulSoup 

def scrape_trails(BASE_URL, data): 
    #Get the trail names 
    soup = BeautifulSoup(data) 
    sitesDiv = soup.findAll("div", attrs={"id" : "sitesDiv"}) 
    print sitesDiv 


def main(): 
    BASE_URL = "http://www.dnr.state.mn.us/skiing/skipass/list.html" 
    br = mechanize.Browser() 
    data = br.open(BASE_URL).get_data() 
    links = scrape_trails(BASE_URL, data) 


if __name__ == '__main__': 
    main() 

は、ここに私のコードです。私は何かが間違っているのか、これがスクリプトが処理できない不正な形式のマークアップなのかどうかはわかりません。ありがとう!

<div id="sitesDiv">&nbsp;</div> 

ページがロードされた後のdivを埋めページのスクリプトがあります:

答えて

2

問題は、HTMLが空div.sitesDivを有しているURLから提供ということです。あなたのPythonコードはJavascriptを実行しないので、divは決して変更されないので、コードが解析するときにはまだ空です。

お探しのデータは、URL:http://maps.dnr.state.mn.us/cgi-bin/mapserv54?map=/usr/local/mapserver/apps/prk/ski_pass/sites.map&mode=nquery&qformat=geojsonからJSONとしてHTMLに配信されます。したがって、BeautifulSoupをスキップして、JSONを直接読み込んで解析して、必要な情報を取得するだけです。