У меня есть код, который в настоящее время распечатывает данные для каждого пользователя из XML-файла (полученного с веб-сайта) XML-обновлений, поскольку все больше пользователей взаимодействуют с ним на протяжении всего день. В настоящее время у меня есть свод кода для загрузки этих данных каждые 5 минут.Сопоставление идентификатора пользователя с файлом dict по сравнению с тем, если пользователь уже находится в dict
Каждый раз, когда код побежал он генерирует список пользователей и их статистика, первых 5 минут он печатает пользователь: х, у, г
вторые 5 минут он печатает пользователь:
x,y,z,a,b
третьи 5 минут он печатает пользователь:
x,y,z,a,b,c,d
Что мне нужно коды, чтобы сделать это, чтобы напечатать первые 5 минут:
x,y,z
второй 5 минут:
a,b
третий 5 минут:
c,d
Некоторые, как признание того, что некоторые пользователи уже использовались. У каждого пользователя есть уникальный идентификатор пользователя, который, как я думаю, может быть сопоставлен?
Прилагаю пример моего кода, в случае, если это помогает.
import mechanize
import urllib
import json
import re
import random
import datetime
from sched import scheduler
from time import time, sleep
######Code to loop the script and set up scheduling time
s = scheduler(time, sleep)
random.seed()
def run_periodically(start, end, interval, func):
event_time = start
while event_time < end:
s.enterabs(event_time, 0, func,())
event_time += interval + random.randrange(-5, 45)
s.run()
###### Code to get the data required from the URL desired
def getData():
post_url = "URL OF INTEREST"
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' : '250',
'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>')
##### Making the code identify each row, removing the need to numerically quantify the number of rows in the xmlfile,
##### thus making number of rows dynamic (change as the list grows, required for looping function to work un interupted)
for row in xmlload1['rows']:
cell = row["cell"]
##### defining the Keys (key is the area from which data is pulled in the XML) for use in the pattern finding/regex
user_delimiter = cell['username']
selection_delimiter = cell['race_horse']
if strikeratecalc2 < 12 : continue;
##### REMAINDER OF THE REGEX DELMITATIONS
username_delimiter_results = re.findall(pattern1, user_delimiter)[0]
userid_delimiter_results = (re.findall(pattern2, user_delimiter)[0])
user_selection = re.findall(pattern3, selection_delimiter)[0]
##### Printing the results of the code at hand
print "user id = ",userid_delimiter_results
print "username = ",username_delimiter_results
print "user selection = ",user_selection
print ""
getData()
run_periodically(time()+5, time()+1000000, 3000, getData)
Мне сообщили, что это может быть достигнуто с помощью цитаты:. «В Dict, который отображает user_id на данные объекта, содержащего пользователя На каждом ходу скребка, проверьте идентификатор пользователя уже в Словаре, и если так обновлять соответствующий объект, в противном случае добавить новую запись в dict. " Если бы кто-нибудь мог предоставить какой-то примерный код для такой проблемы, я смогу его обработать для решения моего кода.
С уважением и большое спасибо AEA
проще всего было бы сохранить список всех пользователей ids, и если идентификатор уже существует, ничего не печатайте. – pypat
@FMc Привет, FMc, я пытаюсь использовать эту кодировку на python в течение 12 дней, я боюсь, что без какого-либо примера работать или реконструировать, я не знаю, с чего начать!: s С уважением, AEA – AEA