2016-09-16 11 views
0

MTAの情報ページでdivを取得しようとしています。私はhtmlをつかんで、それをBeautifulSoupで解析すると、いくつかのデータが失われているようです。 beautifulsoupのクラスがありません

は、ここで私はちょうど私がすべてのデータを取得していますことを確認するために、プリントを使用していますこれまで

from bs4 import BeautifulSoup 
import urllib # access the web 

# SUBWAY STATUS PROJECT 
userURL = "http://www.mta.info" # MTA SITE 

htmlfile = urllib.urlopen(userURL) #creates html file 
htmldoc = htmlfile.read() #creates html text 

soup = BeautifulSoup(htmldoc, 'html.parser')  

subChart = soup.find(id = 'subwayDiv') 

print subChart 

私のコードです。私は取得しようとしているいくつかの情報が不足していることがわかります。私は自分自身でページを見ると、私は地下鉄の状態を示すクラスのdivがないことがわかります。

私はクラスsubwayCategoryを持つ要素のためのサブチャートの変数を見て自分の無知

+0

これらはajaxで作成され、一般的な静的HTMLでは作成されないため、別の方法で試してみてください。 – kiviak

答えて

0

を気にし、属性IDの値を保存してくださいプログラミングに非常に新しいです。 EXについて :

<div style="float: left; width: 220px; border-bottom: 1px solid #7B7B98; padding: 4px 0;"> 
<div class="span-11"><img alt="1 2 3 Subway" class="subwayIcon_123" src="http://www.mta.info/sites/all/modules/custom/servicestatus/images/img_trans.gif"/></div> 
<div class="subwayCategory" id="123" style="margin-top: 4px;"></div> 

データのこの部分からクラスsubwayCategoryとDIVのid値が123 ある今http://www.mta.info/status/subway/{ID}

への要求が持つ用語{ID}を交換しますあなたが望むID

+0

それは動作しません。ブラウザやコードで試してみてください。 –

0

データはajaxリクエストで取得され、json形式の情報を取得できます。あなたはそれをあなたがtime.time()を得ることができますタイムスタンプを渡す必要がある唯一のものは、ただjsonライブラリとそれを解析:

from time import time 
from json import load, loads 
import urllib 

url = "http://www.mta.info/service_status_json/{}".format(int(time())) 

json_dict = loads(load(urllib.urlopen(url))) 

from pprint import pprint as pp 
pp(json_dict) 

私はのようにそこにすべての出力を追加しません

{u'line': [{u'Date': {}, 
      u'Time': {}, 
      u'name': u'Bronx-Whitestone', 
      u'status': u'GOOD SERVICE', 
      u'text': {}}, 
      {u'Date': {}, 
      u'Time': {}, 
      u'name': u'Cross Bay', 
      u'status': u'GOOD SERVICE', 
      u'text': {}}, 
      {u'Date': {}, 
      u'Time': {}, 
      u'name': u'Henry Hudson', 
      u'status': u'GOOD SERVICE', 
      u'text': {}}, 
      {u'Date': u'09/16/2016', 
      u'Time': u' 5:57AM', 
      u'name': u'Hugh L. Carey', 
      u'status': u'SERVICE CHANGE', 
      u'text': u"     <span class='TitleServiceChange' >Service Change</span>     <span class='DateStyle'>     &nbsp;Posted:&nbsp;09/16/2016&nbsp; 5:57AM     </span><br/><br/>     HLC - HOV Lane Open 6 AM to 10 AM. Two-Way Operations in effect. Three (3) lanes Manhattan-bound. One (1) lane Brooklyn-bound.    <br/><br/>    "}, 
      {u'Date': {}, 
      u'Time': {}, 
      u'name': u'Marine Parkway', 
      u'status': u'GOOD SERVICE', 
      u'text': {}}, 
      {u'Date': u'09/16/2016', 
      u'Time': u' 5:57AM', 
      u'name': u'Queens Midtown', 
      u'status': u'SERVICE CHANGE', 
      u'text': u"     <span class='TitleServiceChange' >Service Change</span>     <span class='DateStyle'>     &nbsp;Posted:&nbsp;09/16/2016&nbsp; 5:57AM     </span><br/><br/>     QMT - HOV Lane Open 6 AM to 10 AM. Two-Way Operation in effect. Three (3) lanes Manhattan bound. One (1) lane Queens bound.    <br/><br/>         <span class='TitlePlannedWork' >Planned Work</span>     <br/>     <P style='MARGIN: 0in 0in 0pt'><SPAN style=''Times New Roman';2016; Queens-Midtown Tunnel downtown exit; One lane closed. Use 37<SUP>th</SUP></FONT><FONT size=3> St tunnel exit for access to 2</FONT><SUP><FONT size=3>nd</FONT></SUP><FONT size=3> Ave. Motorists should allow extra time and may wish to use an alternate route if possible' Drivers should expect delays and plan accordingly. Motorists can sign up for MTA e-mail or text alerts at </FONT><SPAN style='COLOR: blue'><A href='http://www.mta.info/'><SPAN style='COLOR: #0563c1'><FONT size=3>www.mta.info</FONT></SPAN></A><FONT size=3> </FONT></SPAN><FONT size=3>and check the Bridges and Tunnels homepage or Facebook page for the latest information on this planned work.</FONT></FONT></SPAN></P>    <br/><br/>         <span class='TitlePlannedWork' >Planned Work</span>     <br/>     QMT- MANHATTAN PLAZA WORK REQUIRES CLOSURE OF 'CROSSTOWN' LANES FOR 2 MONTHS. CUSTOMERS SEEKING A CROSSTOWN MANHATTAN ROUTE USE THE UPTOWN LANES; EXPECT DELAYS.    <br/><br/>    "}, 
      {u'Date': u'08/15/2016', 
      u'Time': u' 3:56PM', 
      u'name': u'Robert F. Kennedy', 
      u'status': u'PLANNED WORK', 
      u'text': u"     <span class='TitlePlannedWork' >Planned Work</span>     <br/>     <P style='MARGIN: 0in 0in 0pt'><SPAN style='COLOR: #1f497d'><FONT size=3 face=Calibri>Starting Monday, August 15, 2016 and through early 2018, one lane will be closed on the Queens-to-Manhattan ramp at the Robert F. Kennedy Bridge for roadway rehabilitation. In addition, overnight on Thursday, August 18 and Friday, August 19, there will be a series of intermittent FULL ramp closures, lasting 15-20 minutes each.</FONT></SPAN></P>    <br/><br/>    "}, 
      {u'Date': {}, 
      u'Time': {}, 
      u'name': u'Throgs Neck', 
      u'status': u'GOOD SERVICE', 
      u'text': {}}, 
      {u'Date': u'09/16/2016', 
      u'Time': u' 5:28AM', 
      u'name': u'Verrazano-Narrows', 
      u'status': u'PLANNED WORK', 
      u'text': u"     <span class='TitlePlannedWork' >Planned Work</span>     <br/>     VNB: PLANNED WORK; S. I. BOUND LOWER LEVEL - ONE LANE CLOSED; EXPECT DELAYS.    <br/><br/>    "}]} 

だから、あなただけのdictを通過して、必要なものを選択する必要があります:私たちが得る多すぎるが、"BT"を使用。

+0

ありがとう私は家に帰るときに私は細かくしよう! –

関連する問題