2017-10-13 11 views
0

私は、そのWebページのCDataセクションでスクラップしたい次のデータを持つWebページを持っています。BeautifulSoupでCData内の変数をスクラブ

<script type="text/javascript">//<![CDATA[ 

car.app = 


{"lat":26.175625,"lon":-80.13808,"zoom":"13","yellow":"\/img\/icons\/yellow.png","cars":[{"CAR_ID":"715383","ID":"538070521","UID":"0","CARNAME":"MAZDA","TYPE_COLOR":"0","LAT":"26.13437","LON":"-80.11906","COURSE":"100","SPEED":"0","LENGTH":"12","STATE":"OH"}] 

... 
... 
//]]></script> 

私は、CDATAの内側car.app変数をつかむしたいと思いますが、私はPythonでこれを解析する方法がわからないと思います。

import bs4 as bs 

import urllib.request 

class AppURLopener(urllib.request.FancyURLopener): 
    version = "Mozilla/5.0" 

opener = AppURLopener() 
response = opener.open(url) 

c = response.read() 
soup = bs.BeautifulSoup(c, "html.parser") 
print(soup) 

答えて

0

私はあなたの問題を解決する唯一の方法はBeautifulSoupを使用してその特定のタグを解析して、あなたの目標を達成するために、いくつかの文字列操作を行うことであると思います。

コード:

import bs4 as bs 
import urllib.request 

c = ''' 
<script type="text/javascript">//<![CDATA[ 

car.app = 


{"lat":26.175625,"lon":-80.13808,"zoom":"13","yellow":"\/img\/icons\/yellow.png","cars":[{"CAR_ID":"715383","ID":"538070521","UID":"0","CARNAME":"MAZDA","TYPE_COLOR":"0","LAT":"26.13437","LON":"-80.11906","COURSE":"100","SPEED":"0","LENGTH":"12","STATE":"OH"}] 

... 
... 
//]]></script> 
''' 
soup = bs.BeautifulSoup(c, "html.parser") 
script = soup.find('script') 
print(str(script.text).split('car.app =')[1].split('...')[0].replace('\n', '')) 

出力:

{"lat":26.175625,"lon":-80.13808,"zoom":"13","yellow":"\/img\/icons\/yellow.png","cars":[{"CAR_ID":"715383","ID":"538070521","UID":"0","CARNAME":"MAZDA","TYPE_COLOR":"0","LAT":"26.13437","LON":"-80.11906","COURSE":"100","SPEED":"0","LENGTH":"12","STATE":"OH"}] 
+0

はい!私は同じアプローチを考えていましたが、それを書く方法を考え出すことはできませんでした。ありがとう@アリー! – CENTURION

+0

問題なしセンテンス:) – Ali

関連する問題