urllib2.request를 사용하여 XML을 수신하는 웹 서비스를 쿼리하고 있습니다. 웹 서비스의 속도 제한 (1 call/second)을 위반하면 속도 제한을 위반했다는 HTML 백 워드를받습니다.xml.dom.minidom.parse()가 XML 속성에 유니 코드가 포함되어 있으면 실패 함
각 호출 후에 2-3 초 동안 time.sleep()을 수행 할 수 있지만 어떤 이유로 든 속도 제한을 위반합니다.
내 응답은 XML 또는 HTML 중 하나입니다, 내가try:
dom = xml.dom.minidom.parseString(response_text)
except xml.parsers.expat.ExpatError:
return False
if len(dom.getElementsByTagName('html')) == 0:
return True
else:
return False
이 작업을 수행하지만 취득하는 HTML 요소의 존재를 테스트 후 xml.dom.minidom()를 사용하고있어 테스트하려면 XML 속성 중 하나에 XML이 포함 된 경우를 실행합니다. 이 경우, parseString을() 명령이 경우
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/python/default-2.6/lib/python2.6/xml/dom/minidom.py", line 1918, in parse
return expatbuilder.parse(file)
File "/opt/python/default-2.6/lib/python2.6/xml/dom/expatbuilder.py", line 924, in parse
result = builder.parseFile(fp)
File "/opt/python/default-2.6/lib/python2.6/xml/dom/expatbuilder.py", line 207, in parseFile
parser.Parse(buffer, 0)
xml.parsers.expat.ExpatError: not well-formed (invalid token): line 1, column 3125
실패, 열 3125는 (유래 내 유니 코드를 숨기고) 앰퍼샌드 파운드-X-9가 들어 일부 속성 값 텍스트의 일부입니다.
xml.dom.minidom이이를 처리 할 수 있습니까? 이 외에도 구문 분석을 실패하게 만드는 XML 외에도 다른 문제가있을 수 있습니까?
또한 커뮤니티에 이러한 유형의 상황이있을 경우 다른 방법으로 처리 할 수 있습니다.
가 여기에 있습니다 내가 그들의 속도 제한을 위반 한 웹 서비스 반환 것입니다 경우
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="eng">
<head>
<title>Service Temporarily Unavailable - Rate Limited</title>
</head>
<body style="text-align:center;background-color:white;">
<h1>Service Temporarily Unavailable</h1>
<hr />
<div>
You have used this service too often in a short time. Please wait before using this service again.
<br/><br/>
Please visit the <a href="http://wiki.xxxx.com/index.php?title=API_Usage">wiki</a> for more details.
</div>
</body>
</html>
감사합니다. 문제는 타사 웹 서비스의 API 속도 제한이 깨졌습니다. 그들은 내가 살 수있는 1 초당 통화 건수를 기록하지만, 3 초 이상 잠자더라도 가끔 속도 제한 오류가 발생합니다. –