2011-04-10 2 views
0

몇 가지 값을 표시하는 HTML 페이지가 있습니다. 또한 다른 일부 페이지의 데이터를 표시하는 작은 응용 프로그램이 있지만이 다른 페이지는 HTML이 아닌 JSON입니다. HTML 페이지에서이 값을 사용하고 JSON으로 변환 한 다음 출력하고 싶습니다.Python - HTML을 serialize하고 JSON으로 출력

내가 원하는 이유는 단순히 코드를 재사용하고 URL을 변경하거나 동적으로 만들 수 있기 때문입니다.

HTML 페이지를 최대한 일반화하여 정규식을보다 기본화하기 위해 모든 정크를 제거했습니다. 여기

는 HTML입니다 :

<div class="BlockA"> 
    <h4>BlockA</h4> 
    <div class="name">John Smith</div> 
    <div class="number">2</div> 
    <div class="name">Paul Peterson</div> 
    <div class="number">14</div> 
</div> 

<div class="BlockB"> 
    <h4>BlockB</h4> 
    <div class="name">Steve Jones</div> 
    <div class="number">5</div> 
</div> 

두 블록은 몇 가지 요인에 따라 요소의 다양한 수있을 것이다. 그래서 기본적으로이를 통해 반복, 값을 (실제로, 소스가이 경우에 XML은) 읽고

def index(request, toGet="xyz"): 
    file = urllib2.urlopen("http://www.mysite.com/mypage?data="+toGet) 
    data = file.read() 
    dom = parseString(data) 
    rows = dom.getElementsByTagName("BlockA")[0] 
    readIn = "" 
    for row in rows: 
     readIn = readIn+json.dumps(
      {'name': row.getAttribute("location"), 
      'number': row.getAttribute("number")}, 
      sort_keys=True, 
      indent=4)+"," 
    response_generator = ("["+readIn[:-1]+"]") 
    return HttpResponse(response_generator) 

, 모든 값을 출력 :

여기 내 파이썬입니다.

누군가가 올바른 방향으로 나를 가리킬 수 있으면 크게 감사하겠습니다. 예를 들어, "BlockA"와 같은 태그를 읽은 다음 "name"및 "number"태그를 읽습니다.

감사합니다.

답변

2

정말로 파이썬에서 HTML 페이지를 구문 분석해야한다면 Beautiful Soup을 사용해야합니다. 나는 당신이 정말로이 일을해야하는지 의문이다. HTML 페이지와 JSON 출력이 동일한 Django 인스턴스를 사용합니까? 그들은 모두 같은 프로젝트에서 떨어져 있습니까?

동일한 프로젝트의 개이면, django-piston과 같은 것을 사용할 수 있습니다.이 프레임 워크는 Python 용 RESTful 프레임 워크입니다. 이렇게하면 노출되어야하는 데이터를 정의하고 HTML/Django 템플릿, JSON, XML 또는 YAML과 같은 여러 형식으로 출력 할 수 있습니다. 자신의 에미 터를 만들어 다른 형식으로 출력 할 수도 있습니다.

그런 식으로 특정 URL을 일반 템플릿으로 노출하거나 JSON과 동일한 데이터를 얻을 수 있으므로 HTML보다 구문 분석이 훨씬 쉬워집니다.

죄송합니다. 귀하의 문제를 이해할 수 없다면. 그러나보기를 여러 가지 다른 형식으로 표시하려는 것처럼 실제로 소리가납니다. RESTful 프레임 워크가 도움이 될 것입니다.

+0

실제로 2 개의 "보기"는 내 views.py에 정의되어 있으며 2 개의 XML 파일 (1 개의 로컬, 1 개의 원격)에서 데이터를 가져옵니다. 이것은 나의 제 3의 전망 일 것이다. 예를 들어, mysite.com/view1/21, mysite.com/view2/12 및 myste.com/view3/{string}이 있습니다. "문자열"뷰는이 태그이므로 이미 REST를 사용하고 있습니다. HTML을 출력하기 만하면 JSON 판독기에서 구문 분석 할 수 있습니다. 이 "아름다운 스프"가 무엇입니까? 나는 이전에 그것에 대해 들어 봤지만 어떤 예를 보았지만 사용하지는 못했습니다. – eoinzy

+0

아름다운 스프는 HTML 또는 XML 구조를 구문 분석하기위한 것입니다. 전략에 따라 조작되지 않은 HTML (비 닫는 블록)도 처리합니다. 그러나 그렇습니다, 저쪽에보기를주십시오. –

관련 문제