#python #amazon-web-services
#python #amazon-веб-сервисы
Вопрос:
Я выясняю, как я могу опубликовать свой HTML-файл с помощью python со своего локального компьютера для хитов в песочнице. У меня есть python и HTML в одном каталоге, и я использовал шаблон в данном руководстве. https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMechanicalTurkRequester/Welcome.html.
1 import boto3
2 MTURK_SANDBOX = 'https://mturk-requester-sandbox.us-east-1.amazonaws.com'
3 mturk = boto3.client('mturk',
4 aws_access_key_id = "AKIAWMEANKTGFT3M57VI",
5 aws_secret_access_key = "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",
6 region_name='us-east-1',
7 endpoint_url = MTURK_SANDBOX
8 )
9 print("I have $" mturk.get_account_balance()['AvailableBalance'] " in my Sandbox account")
10
11 html_layout = open('./HTML_template.html', 'r').read()
12 new_hit = mturk.create_hit(
13 Title = 'Finish all tasks',
14 Description = 'Please follow the instructions described in the webpage',
15 Keywords = 'multiple choice',
16 Reward = '0.01',
17 MaxAssignments = 1,
18 LifetimeInSeconds = 172800,
19 AssignmentDurationInSeconds = 600,
20 AutoApprovalDelayInSeconds = 14400,
21 Question = html_layout,
22 )
23 print("A new HIT has been created. You can preview it here:" )
24 print("https://workersandbox.mturk.com/mturk/preview?groupId=" new_hit['HIT']['HITGroupId'])
25 print("HITID = " new_hit['HIT']['HITId'] " (Use to Get Results)")
26 # Remember to modify the URL above when you're publishing
27 # HITs to the live marketplace.
28 # Use: https://worker.mturk.com/mturk/preview?groupId=
Вот сообщение об ошибке при запуске команды python3 create_tasks.py
botocore.exceptions.ClientError: An error occurred (ParameterValidationError) when calling the CreateHIT operation: There was an error parsing the XML question or answer data in your request. Please make sure the data is well-formed and validates against the appropriate schema. Details: Scanner State 24 not Recognized (1602359732641 s)
Вот моя мысль: в строке 11 есть ошибка. Функция open
не может принять HTML-файл, и поэтому я получил сообщение об ошибке. Как я могу исправить эту ошибку?
Ответ №1:
Очень вероятно, что ваш HTML-файл отформатирован неправильно. Пожалуйста, смотрите следующий пример.
<crowd-form> <crowd-classifier name="sentiment" categories="['Positive', 'Negative', 'Neutral', 'N/A']" header="What sentiment does this text convey?" > <classification-target> Everything is wonderful. </classification-target> <full-instructions header="Sentiment Analysis Instructions"> <p><strong>Positive</strong> sentiment include: joy, excitement, delight</p> <p><strong>Negative</strong> sentiment include: anger, sarcasm, anxiety</p> <p><strong>Neutral</strong>: neither positive or negative, such as stating a fact</p> <p><strong>N/A</strong>: when the text cannot be understood</p> <p>When the sentiment is mixed, such as both joy and sadness, use your judgment to choose the stronger emotion.</p> </full-instructions> <short-instructions> Choose the primary sentiment that is expressed by the text. </short-instructions> </crowd-classifier> </crowd-form> </body> </html> ]]></HTMLContent> <FrameHeight>0</FrameHeight> </HTMLQuestion>
Ответ №2:
Каково содержимое вашего HTML-файла?
Это не должен быть просто HTML. Turk ожидает, что html будет заключен в тег.
Смотрите https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_HTMLQuestionArticle.html для примера и посмотрите, как форматируется HTML-вопрос.