Привет, ребята, большое спасибо за то, что нашли время, чтобы посмотреть на мою проблему, я работаю над этим кодом около 1 недели (я новичок в кодировании и на python 1 неделю). В настоящее время цикл работает только в том случае, если x в xrange (x) и 'rp': 'x' - правильное количество строк, доступных из этого xml. Xml обновляется в течение дня, мне было интересно, может ли кто-нибудь предложить решение для x-динамического?Как сделать динамику rp и xrange?
import mechanize
import urllib
import json
import re
from sched import scheduler
from time import time, sleep
from sched import scheduler
from time import time, sleep
s = scheduler(time, sleep)
def run_periodically(start, end, interval, func):
event_time = start
while event_time < end:
s.enterabs(event_time, 0, func,())
event_time += interval
s.run()
def getData():
post_url = "urlofinterest_xml"
browser = mechanize.Browser()
browser.set_handle_robots(False)
browser.addheaders = [('User-agent', 'Firefox')]
######These are the parameters you've got from checking with the aforementioned tools
parameters = {'page' : '1',
'rp' : '8',
'sortname' : 'roi',
'sortorder' : 'desc'
}
#####Encode the parameters
data = urllib.urlencode(parameters)
trans_array = browser.open(post_url,data).read().decode('UTF-8')
xmlload1 = json.loads(trans_array)
pattern1 = re.compile('> (.*)<')
pattern2 = re.compile('/control/profile/view/(.*)\' title=')
pattern3 = re.compile('<span style=\'font-size:12px;\'>(.*)<\/span>')
pattern4 = re.compile('title=\'Naps posted: (.*) Winners:')
pattern5 = re.compile('Winners: (.*)\'><img src=')
for i in xrange(8):
user_delimiter = xmlload1['rows'][i]['cell']['username']
selection_delimiter = xmlload1['rows'][i]['cell']['race_horse']
username_delimiter_results = re.findall(pattern1, user_delimiter)[0]
userid_delimiter_results = int(re.findall(pattern2, user_delimiter)[0])
user_selection = re.findall(pattern3, selection_delimiter)[0]
user_numberofselections = float(re.findall(pattern4, user_delimiter)[0])
user_numberofwinners = float(re.findall(pattern5, user_delimiter)[0])
strikeratecalc1 = user_numberofwinners/user_numberofselections
strikeratecalc2 = strikeratecalc1*100
print "user id = ",userid_delimiter_results
print "username = ",username_delimiter_results
print "user selection = ",user_selection
print "best price available as decimal = ",xmlload1['rows'][i]['cell'] ['tws.best_price']
print "race time = ",xmlload1['rows'][i]['cell']['race_time']
print "race meeting = ",xmlload1['rows'][i]['cell']['race_meeting']
print "ROI = ",xmlload1['rows'][i]['cell']['roi']
print "number of selections = ",user_numberofselections
print "number of winners = ",user_numberofwinners
print "Strike rate = ",strikeratecalc2,"%"
print ""
getData()
run_periodically(time()+5, time()+1000000, 15, getData)
Сердечные приветы AEA
Привет, Джефф, прежде всего большое спасибо за ответ на вопрос и еще больше очков за то, что он сделал это как урок, полностью объяснив ваш ответ. Если моя интерпретация правильная, мне нужно определить, что строка (разъяснение?), Как у вас есть: 'xmlload1 = { " rows ": [{" cell ": {" username ":" one "," race_horse ": "b"}}, {"cell": {"username": "two", "race_horse": "c"}}]} ' – AEA
@AEA вам не нужно определять, что такое строка, на основе вашего код, это структура данных, которые генерирует ваш запрос. Добавьте 'print xmlload1' в свой код после строки с' json.loads', и вы поймете, что я имею в виду. –
Пример xml, который я читаю: '' {u'cell ': {u'username': u ' RobLloyd91', u'roi ': u'18 to go', u'race_time ': u'16: 15 ', 'Как бы это определить (обратите внимание, что я могу регулярно использовать неправильный жаргон.Еще обучение) – AEA