所以我正试图从iTunes中删除图表数据。我知道你可以将RSS链接从他们的链接构建器构建到iTunes上的顶级图表。但是,我不打算刮掉itunes商店,而是寻找位于http://itunes.apple.com的Apple Music应用程序。
所以基本上我想抓取iTunes中的数据,如果你去“浏览 - >热门图表 - >查看全部”并在整体和其他一些类型中搜索数据。
我已经尽力使用我能够收集的json信息,并且我能够毫无问题地刮掉任何图表的前50首歌曲。
但是,出于某种原因,#51-200
在我通过请求获得的响应中有adamIds(就像前50个一样)但是他们都错误地发现KeyError他们的id没有指向任何东西且没有返回值。
我的代码在下面,我确信它的东西非常愚蠢和简单,但我已经狠狠地敲了一下,我已经开始破坏脚本的部分工作只是为了尝试使这个片段功能
url = "http://itunes.apple.com"
chart_id = "1"
params = urllib.urlencode(
{
'cc': 'us',
'popId': '81',
'genreId': '34'
}
)
time = datetime.datetime.now
headers = {
"X-Apple-Store-Front": "143441-1,32 t:music3",
"X-Apple-I-MD-M": "+EjdHJ+LfPCZZErf9bur/G4AP/SnZrwxjYlPctTGf63EFu9ThmDGqhr2lGmEAXwoKOokD6MaATf0NJp3",
"X-Apple-I-MD-RINFO": "17106176",
"X-Apple-I-Client-Time": datetime.datetime.now().isoformat(),
"X-Apple-Tz": "7200",
"Referer": "https://apps.itunes.apple.com/files/desktop-music-app-seed/",
"X-Apple-I-MD": "AAAABQAAABDQOonnfAdO+H7jnDjjQNOhAAAAAQ==",
"Origin": "https://apps.itunes.apple.com"
};
http_conn = requests.Session()
request = http_conn.get(
url+"/WebObjects/MZStore.woa/wa/viewTop?"+params, headers=headers)
response = request.text.encode('utf-8')
category = "All"
data = json.loads(response)
tracks = data['storePlatformData']['lockup']['results']
trackIds = data['pageData']['selectedChart']['adamIds']
print(data)
rows = [];
i=1;
for track in trackIds:
if len(track) == 10:
try:
print "Track: "+track
sql = "INSERT INTO %s (Artist,Song,Rank,Album,chart_name,Playlist,chart_name_2,chart_type,Date) values ('%s', '%s', '%s', '%s','%s','%s','%s','%s','%s')" % (
"songs_chart",
escape_string(tracks[track]['artistName'].encode('utf-8')).strip(), #Artist
escape_string(tracks[track]['name'].encode('utf-8')).strip(), #song
escape_string(str(i).encode('utf-8')).strip(), #rank
escape_string(tracks[track]['collectionName'].encode('utf-8')).strip(), #album
escape_string(category.encode('utf-8')).strip(), #chart_name
escape_string("0".replace(".","").encode('utf-8')).strip(), #playlist
escape_string("United States"), #chart_name_2
escape_string("Apple Music Top 200"),
datetime.datetime.now().isoformat(),
)
print ('Printing song #{} - {}').format(i, sql)
except KeyError, e:
print('KeyError detected --reason-- = {}'.format(e))
i = i+1
一如既往,非常感谢你们给予的任何帮助!