#python #web-scraping
Вопрос:
Я хочу использовать скрипт python для извлечения полезной информации о списке приложений, у меня есть CSV-файл, содержащий имя компании, и мне нужно выяснить, какими приложениями владеет компания
|Company_Name|
|------------|
|Verizon |
|Lyft |
|Paypal |
|Tinder |
|Houseparty |
|9gag |
Я пытаюсь использовать requests
для получения информации о приложении с помощью Apple API, но есть проблема, что я лицо, используя этот API, я не могу найти количество загрузок приложения, и он не нашел применения Verizon
компанию, потому что она названа My Verizon
в магазин приложений, я спрашиваю, как я могу добавить условие, чтобы сделать приблизительный поиск и как я могу найти загрузки приложений в магазине приложений
Я использую Google Colab
import requests
import json
import pandas as pd
#output datafrmae
output_df = pd.DataFrame()
#Read Company_Name list from App_Details.csv
App_Details = [x[0] for x in pd.read_csv('App_Details.csv' , usecols=['Company_Name']).values.tolist()]
for Company_Name in App_Details:
print(Company_Name)
#api search link of app play
link = 'https://www.apple.com/search-assets/searchlight/search'
#form data for the api
data = {"locale":"en_EG","query":Company_Name,"page":"0","resultPerPage":"30","requestedService":"","src":"aml_serp"}
#post rquest to get the json reponse of the api
results = requests.post(link , headers = {'content-type': 'application/json'} , data=json.dumps(data)).json()['results'][0]['sectionResults']
#getting all the results of apps for the first 30 apps
list_of_ids = [ [x for x in result['navLinks'] if x.get('label')!=''][0]['link'].split('/id')[1] for result in results]
#list for all apps ids to use it for the next link api
#only if there is a result per Company_Name
if list_of_ids !=[]:
#api search sub_link of app play searching by list of ids
sub_link = f'https://amp-api.apps.apple.com/v1/catalog/eg/apps?ids={",".join(list_of_ids)}amp;platform=webamp;additionalPlatforms=appletv,ipad,iphone,mac'
# headers with the authorization
sub_headers = {'authorization':'Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlU4UlRZVjVaRFMifQ.eyJpc3MiOiI3TktaMlZQNDhaIiwiaWF0IjoxNjI5MjI0MjQzLCJleHAiOjE2MzY0ODE4NDN9.2cP0UyUe2m2BKVbZQWFLVqrscorqsedOdIFLcgbZxfgXyVnR4ubwPNPqeCAtphLLsYU23Om6J5PGySBes1uxuA'}
#get rquest to get the api json data
sub_results = requests.get(sub_link , headers =sub_headers ).json()['data']
#convert the json data into dataframe
df = pd.json_normalize(sub_results)
#add the Company_Name at the first column
df.insert(0, 'Company_Name', Company_Name)
#just keep the important columns
df = df[['Company_Name','id','type','href']]
#append that to the final file
output_df = output_df.append(df)
#rename the column
output_df = output_df.rename(columns={'Company_Name' : 'Company_Name_2' , 'id':'id_2'} )
#save the final file into App_Details_Output.csv
output_df.to_csv(f'App_Details_Output.csv', index=False)