Форум сайта python.su
Я недавно изучаю Python по одной книге. Требуется доработка программы. Я установила Python 2.6, зарегистрировалась на сайте eBay и получила все требуемые ключи-разработчика,сертификата, приложения и маркер аутентификации. Был создан скомпилированный файл с расширением .рус. Но пример из книги не работает. Хотелось бы узнать в чем проблема. Программа должна получить список лэптопов сайта eBay.
Вот исходный код файла ebaypredict:
import httplib
from xml.dom.minidom import parse, parseString, Node
devKey='187c2a0b-48cb-4b5f-8aad-e1c9315646a1'
appKey='MariyaAl-32b9-46c0-a14a-355b78b346c2'
certKey='e42cd6dd-ac18-4ffd-81c3-2184cacc78bf'
userToken='AgAAAA**AQAAAA**aAAAAA**9RtHTQ**nY+sHZ2PrBmdj6wVnY+sEZ2PrA2dj6wFk4CoAZGDog2dj6x9nY+seQ**kngBAA**AAMAAA**pN0ivuInTRosEefxx7pBYHCpJobeqitcafJyiQrJu7KH+oEYKP+CXdcmVUkx+I3Ao4VYRMoR+Jclnt1Ks7kpLx7O+v4495So9xNmvVVqzOv33meqJ477NNxgv5g3EBtFpZXHXxK4M8bXG4PZu5hqRsdNIGBjahudOjKpaqHcQdFzl92CZNyE8o0hV6JVeIT/hkaCFKlLQPx4Bp1UiT9udIqWi36ZO/dHMiX1hAjeA0GvmF4+8bYmhILAg4t6xbO9If5QQ7yasGloKfaBBfbGG7+iYKuDNjGkRCuMDZC322Y8clMlhExYtngYEXvYo8oJZbfVIkmuwZeElWaAU35hJzAjlovy8GGFOZUInxZ5W747M2CjInnTY7n64USy8SRUVimpOdIXmj814ps1CTEjbu/yHDVZR5qPLe1ZIUeJhOkLbwuaoA52zybkJUInkE9nahQVIoV1z3sLF4Ljv8X2rJRV0k2lFAdF/FWNU+/AOoGo7YCbIPxKM14E8NgWecpeoWzb3Ftyr+V9ks0Xw3SLSzN0hTfxPNqfiWsfCErrapWSW4sCURL7bkOSH5aVNSsjsL/G7FPQm+IFOe7ocq66Fcsgj6aj7wWRfkQVjhqHYGH93AwIsDPPtLjxpXTuXJ/imWgt8Ogc6HzISAyWINK7P3YfE9UtoTb2K+laIZ2PXz7+WGSlvzenqRzOFS8C3fQDafluiNMvFkltHbMqCrWPKQiLqg2ujPTyjQxNgYywFy1mvcZ3J8zL3ZqO0iS9f9KU'
serverUrl='api.ebay.com'
def getHeaders(apicall, siteID="0", compatabilityLevel= "433"):
headers = {"X-EBAY-API-COMPATIBILITY-LEVEL": compatabilityLevel,
"X-EBAY-API-DEV-NAME": devKey,
"X-EBAY-API-APP-NAME": appKey,
"X-EBAY-API-CERT-NAME": certKey,
"X-EBAY-API-CALL-NAME": apicall,
"X-EBAY-API-SITEID": siteID,
"Content-Type": "text/xml"}
return headers
def sendRequest(apicall, xmlparameters):
connection = httplib.HTTPSConnection(serverUrl)
connection.request("POST", '/ws/api.dll', xmlparameters,
getHeaders(apicall))
response = connection.getresponse( )
if response.status != 200:
print "oshibka:" + response.reason
else:
data = response.read( )
connection.close( )
return data
def getSingleValue(node,tag):
nl=node.getElementsByTagName(tag)
if len(nl)>0:
tagNode=nl[0]
if tagNode.hasChildNodes( ):
return tagNode.firstChild.nodeValue
return '-1'
def doSearch(query, categoryID=None,page=1):
xml= "<?xml version='1.0' encoding='utf-8'?>"+\
"GetSearchResultsRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">"+\
"<RequesterCredentials><eBayAuthToken>" +\
userToken +\
"</eBayAuthToken></RequesterCredentials>" + \
"<Pagination>"+\
"<EntriesPerPage>200</EntriesPerPage>"+\
"<PageNumber>"+str(page)+"</PageNumber>"+\
"</Pagination>"+\
"<Query>" + query + "</Query>"
if categoryID!=None:
xml+="<CategoryID>"+str(categoryID)+"</CategoryID>"
xml+="</GetSearchResultsRequest>"
data=sendRequest('GetSearchResults',xml)
response = parseString(data)
itemNodes = response.getElementsByTagName('Item');
results = []
for item in itemNodes:
itemId=getSingleValue(item, 'ItemID')
itemTitle=getSingleValue(item, 'Title')
itemPrice=getSingleValue(item, 'CurrentPrice')
itemEnds=getSingleValue(item, 'EndTime')
results.append((itemId,itemTitle,itemPrice,itemEnds))
return results
def getCategory(query='',parentID=None,siteID='0'):
lquery=query.lower( )
xml = "<?xml version='1.0' encording='utf-8'?>"+\
"<GetCategoriesRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">"+\
"<RequesterCredentials><eBayAuthToken>" +\
userToken +\
"</eBayAuthToken></RequesterCredentials>"+\
"<DetailLevel>ReturnAll</DetailLevel>"+\
"<ViewAllNodes>true</ViewAllNodes>"+\
"<CategorySiteID>"+siteID+"</CategorySiteID>"
if parentID==None:
xml+="<LevelLimit>1</LevelLimit>"
else:
xml+="<CategoryParent>"+str(parentID)+"</CategoryParent>"
xml+= "</GetCategoriesRequest>"
data=sendRequest('GetCategories',xml)
categoryList=parseString(data)
catNodes=categoryList.getElementsByTagName('Category')
for node in catNodes:
catid=getSingleValue(node,'CategoryID')
name=getSingleValue(node,'CategoryName')
if name.lower( ).find(lquery)!=-1:
print catid,name
<<<import ebaypredict
<<<laptops=ebaypredict.doSearch('laptop')
<<<laptops[0:10]
Офлайн
Я годика 2 назад работал с eBay API. Краткие заметки оставил тут: http://sterch.net/dwiki/doku.php?id=python:ebay.
Офлайн
Я уже читала эти заметки. Они мне кое с чем помогли, но итог - желаемого результата нет! Это часть моей дипломной работы. Я уже голову сломала, почему программа не работает так как нужно!!!!!
Офлайн