adamIds没有返回值

时间:2017-05-12 14:44:04

标签: python python-2.7 web-scraping

所以我正试图从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

一如既往,非常感谢你们给予的任何帮助!

0 个答案:

没有答案