저는 파이썬에서 xml을 구문 분석하는 최선의 방법을 찾고자했습니다. chatango에는 생년월일 (b 태그), 성별 (s 태그) 미니 (body 태그 및 인용) 및 위치 (l 태그)와 같은 사용자 프로필 정보가있는 xml 사이트가 있습니다. 내가하려는 것은 태그의 텍스트를 얻는 것이지만 문제는 사용자가 자신의 프로필에서 뭔가를 채우지 않으면 태그와 텍스트가 XML 사이트에없는 것입니다. 그래서 그 태그가 사이트에 있는지 확인하고 텍스트를 가져 오려고합니다. 그렇지 않다면 물음표로 바꿀 것입니다. 그래서 문제는 내가 그것을하는 더 깨끗한 방법을 찾는데 도움이 필요하다는 것입니다. 나는이 같은 몇 가지 문제를 찾고 있었지만 아무 것도 찾지 못했기 때문에 너희들이 도울 수 있기를 바란다. : PPython에서 Chatango xml 구문 분석
다음은 XML 사이트의 일부는 다음과 같습니다
이 하나가 모든 태그가 있습니다 http://ust.chatango.com/profileimg/c/r/cress/mod1.xml
그리고 일부가 하나의 예 : 여기 http://ust.chatango.com/profileimg/c/o/core/mod1.xml
을 코드 I의를 올라와서 :
import urllib.request
import urllib.parse
import datetime
from xml.etree import cElementTree as ET
class prof:
def getProf(name):
if len(name) == 1: url = "http://ust.chatango.com/profileimg/"+name+"/"+name+"/"+name+"/mod1.xml"
elif len(name) > 1: url = "http://ust.chatango.com/profileimg/"+name[0]+"/"+name[1]+"/"+name+"/mod1.xml"
f = urllib.request.urlopen(url)
data = f.read().decode("utf-8")
data = ET.parse(data).getroot()
today = datetime.date.today()
if data.find("s") is not None:
gender = data.find("s").text
else:
gender = "?"
if data.find("b") is not None:
age = data.find("b").text.split("-")
age = today.year - age[0] - ((today.month, today.day) < (age[1], age[2]))
else:
age = "?"
if data.find("l") is not None:
location = data.find("l").text
else:
location = "?"
if data.find("body") is not None:
mini = urllib.parse.unquote(data.find("body").text)
else:
mini = "?"
if len(mini) < 1575:
return "%s Info - Gender: %s, Age: %s, Location: %s <br/> %s" % (name, gender, age, location, mini)
else:
return "%s Info - Gender: %s, Age: %s, Location: %s <br/> Too many characters to display!" % (name, gender, age, location)
http://bpaste.net/show/479925/ 여기에 일치하는 코드가 더 붙여졌습니다. – Charles