Како слати захтеве гоогле АПИ -ју помоћу Питхон -а

Преглед садржаја

Данас ћу предавати како да шаљете захтеве Гоогле АПИ -ју за добијање информација са одређене адресе, најзанимљивија ствар у водичу је учење како да поднесете захтев за АПИ, са Питхоном је прилично лако и интуитивно. Прво ћемо видети комплетан код, а затим ћу објаснити његове делове:

 #! / уср / бин / енв питхон3 импорт соцкет из урллиб.парсе импорт куоте_плус хеадер = "" "\ ГЕТ / мапс / апи / геоцоде / јсон? аддресс = {} & сенсор = фалсе ХТТП / 1.1 \ р \ н \ Хост : мапс.гоогле.цом: 80 \ р \ н \ Усер-Агент: \ р \ н \ Веза: затвори \ р \ н \ \ р \ н \ "" "деф лоцате (адреса): цоннецтион = соцкет.соцкет ( ) цоннецтион.цоннецт (('мапс.гоогле.цом', 80)) хеадерАук = хеадер.формат (куоте_плус (адреса)) цоннецтион.сендалл (хеадерАук.енцоде ('утф-8')) дата = б '' д = цоннецтион .рецв (1024) вхиле д: дата + = дд = цоннецтион.рецв (1024) принт (дата.децоде ('утф-8')) иф __наме__ == '__маин__': лоцате ('Девелопмент Стреет, Мостолес')
Морамо увести соцкет библиотеку да бисмо успоставили везу, а функцију куоте_плус која припада урллиб.парсе, њена употреба ће се видети касније.
 импорт соцкет из урллиб.парсе импорт куоте_плус 
На почетку ћемо креирати променљиву у којој ћемо креирати заглавље захтева за АПИ:
 хеадер = "" "\ ГЕТ / мапс / апи / геоцоде / јсон? аддресс = {} & сенсор = фалсе ХТТП / 1.1 \ р \ н \ Домаћин: мапс.гоогле.цом: 80 \ р \ н \ Усер-Агент: \ р \ н \ Веза: затвори \ р \ н \ \ р \ н \ "" " 
У првом реду ћете видети {} након адресе =, овако је кад бисмо могли проћи улицом о којој желимо информације.

Ово заглавље има

  • Врста захтева: ГЕТ
  • Ресурс захтева: / мапс / апи / геоцоде / јсон? Аддресс = {} & сенсор = фалсе
  • Тип ХТТП -а који користимо: ХТТП 1.1
  • Домаћин на коме ће бити упућен захтев (укључује порт): мапс.гоогле.цом:80
  • Кориснички агент који није ништа друго до претраживач из којег се врши (оставите празно, у овом случају то није важно)
  • Тип везе: затвори. Другим речима, након захтева биће затворен.

Имамо функцију која се зове да лоцирају, који прима параметар, ово ће бити адреса о којој желимо информације. Објаснићемо функцију корак по корак:

У прва 2 реда креирамо утичницу и повезујемо је на жељену адресу (имајте на уму да функција соцкет цоннецт прима тупле, један аргумент).

 цоннецтион = соцкет.соцкет () цоннецтион.цоннецт (('мапс.гоогле.цом', 80)) 
Трећи ред кода се користи за попунити празнину {} заглавља са адресом која се прослеђује функцији (приметите куоте_плус, овде се користи).
 хеадерАук = хеадер.формат (цитат_плус (адреса))
На следећој линији захтев се шаљеИмајте на уму да користимо функцију кодирања, оно што радимо је да шаљемо податке кодиране у утф-8, ако то нисмо урадили, добили бисте грешку као што ћете видети на следећој слици:
 цоннецтион.сендалл (хеадерАук.енцоде ('утф-8'))

Следећи део кода креирајте променљиву типа бите, помоћи ће нам при прикупљању података који нам стижу с интернета ако нећете добити грешку попут ове:

 подаци = б ''

Оно што ми сада радимо је петља где информације добијамо из Гооглеовог одговора, а ми га складиштимо у променљивој података, функција рецв је та која враћа податке (параметар који прима је максимална количина података коју ће функција вратити). Петља се наставља све док се не врате више подаци, што ће изаћи из тог периода.

 д = цоннецтион.рецв (1024) док је д: дата + = д д = цоннецтион.рецв (1024) 
[цолор = # а9а9а9] Петља која прима информације о АПИ -у [/ цолор]

БелешкаОва петља се може видети на другачији начин, са бесконачном петљом и прекидом када рецв не врати више информација.

Кад завршимо с примањем свих података, можемо насликати само податке који нас занимају или све, овдје враћам све:

 принт (дата.децоде ('утф-8')) 
Последњи део кода нема никакве везе са захтевом, то је провера да ли само ради да ли се извршава датотека (ако је тако, функција је покренута) или се увози у другу датотеку Питхон датотека (функција се не би могла позвати), то су Питхон ствари које се могу научити из њене документације:
 иф __наме__ == '__маин__': лоцате ('Улица за развој, Мостолес') 
Остављам вам део излаза програма, има још података, попут географске ширине и дужине који нису приказани:

Белешка
Ово је један од начина на који се могу постављати захтеви, ево кратког кода једног начина да то учините у Питхон -у 2 користећи рекуест и јсон, али са овим захтевима можете креирати сопствене програме.

 захтеви за увоз деф лоцате (аддресс): параметерс = {'аддресс': аддресс, 'сенсор': 'фалсе'} респонсе = рекуестс.гет ('хттп://мапс.гооглеапис.цом/мапс/апи/геоцоде/јсон' , парамс = параметер) принт (респонсе.јсон ()) иф __наме__ == '__маин__': лоцате ('Девелопмент Стреет, Мостолес')

А у случају да желите да преузмете код:

геолоцатионПитхон.зип 833 бајта 220 преузимања

Да ли вам се допао и помогао овај водич?Можете наградити аутора притиском на ово дугме да бисте му дали позитиван поен

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave