一、URL分析
通过对“Python机器学习”结果抓包分析,有两个无规律的参数:_ksTS和callback。通过构建如下URL可以获得目标关键词的检索结果,如下所示:
https://s.taobao.com/search?data-key=s&data-value=44&ajax=true&_ksTS=1482325509866_2527&callback=jsonp2528&q=Python机器学习&imgfile=&js=1&stats_click=search_radio_all:1&initiative_id=staobaoz_20161221&ie=utf8&bcoffset=0&ntoffset=6&p4ppushleft=.44&fs=1&s=0
https://s.taobao.com/search?data-key=s&data-value=88&ajax=true&_ksTS=1482325509866_2527&callback=jsonp2528&q=Python机器学习&imgfile=&js=1&stats_click=search_radio_all:1&initiative_id=staobaoz_20161221&ie=utf8&bcoffset=0&ntoffset=6&p4ppushleft=.44&fs=1&s=44
https://s.taobao.com/search?data-key=s&data-value=132&ajax=true&_ksTS=1482325509866_2527&callback=jsonp2528&q=Python机器学习&imgfile=&js=1&stats_click=search_radio_all:1&initiative_id=staobaoz_20161221&ie=utf8&bcoffset=0&ntoffset=6&p4ppushleft=.44&fs=1&s=88
https://s.taobao.com/search?data-key=s&data-value=176&ajax=true&_ksTS=1482325509866_2527&callback=jsonp2528&q=Python机器学习&imgfile=&js=1&stats_click=search_radio_all:1&initiative_id=staobaoz_20161221&ie=utf8&bcoffset=0&ntoffset=6&p4ppushleft=.44&fs=1&s=132
https://s.taobao.com/search?data-key=s&data-value=220&ajax=true&_ksTS=1482325509866_2527&callback=jsonp2528&q=Python机器学习&imgfile=&js=1&stats_click=search_radio_all:1&initiative_id=staobaoz_20161221&ie=utf8&bcoffset=0&ntoffset=6&p4ppushleft=.44&fs=1&s=176
https://s.taobao.com/search?data-key=s&data-value=264&ajax=true&_ksTS=1482325509866_2527&callback=jsonp2528&q=Python机器学习&imgfile=&js=1&stats_click=search_radio_all:1&initiative_id=staobaoz_20161221&ie=utf8&bcoffset=0&ntoffset=6&p4ppushleft=.44&fs=1&s=220
https://s.taobao.com/search?data-key=s&data-value=308&ajax=true&_ksTS=1482325509866_2527&callback=jsonp2528&q=Python机器学习&imgfile=&js=1&stats_click=search_radio_all:1&initiative_id=staobaoz_20161221&ie=utf8&bcoffset=0&ntoffset=6&p4ppushleft=.44&fs=1&s=264
https://s.taobao.com/search?data-key=s&data-value=352&ajax=true&_ksTS=1482325509866_2527&callback=jsonp2528&q=Python机器学习&imgfile=&js=1&stats_click=search_radio_all:1&initiative_id=staobaoz_20161221&ie=utf8&bcoffset=0&ntoffset=6&p4ppushleft=.44&fs=1&s=308
二、关键字分析
1、q查询关键词
2、data-value显示记录数
3、s上一页记录数
4、s与data-value的差值即当页显示数量
三、Python抓取数据
#__author__ = ‘Joker‘# -*- coding:utf-8 -*- import reimport urllib.requestkeyWord1 = "Python机器学习"keyWord2 = urllib.request.quote(keyWord1)headers = ("User-Agent","MMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.1708.400 QQBrowser/9.5.9635.400")opener = urllib.request.build_opener()opener.addheaders = [headers]urllib.request.install_opener(opener)for j in range(1,25): try: curPage = 44 prePage = 0 url = "https://s.taobao.com/search?data-key=s&data-value=" + str( curPage) + "&ajax=true&_ksTS=1482325509866_2527&callback=jsonp2528&q=" + keyWord2 + "&imgfile=&js=1&stats_click=search_radio_all:1&initiative_id=staobaoz_20161221&ie=utf8&bcoffset=0&ntoffset=6&p4ppushleft=.44&fs=1&s=" + str( prePage) data = urllib.request.urlopen(url).read().decode("utf-8", "ignore") patTitle = ‘"title":"(.*?)","raw_title"‘ titles = re.compile(patTitle).findall(data) patRawTitle = ‘"raw_title":"(.*?)"‘ rawTitles = re.compile(patRawTitle).findall(data) patImage = ‘"pic_url":"//(.*?)","‘ rawImages = re.compile(patImage).findall(data) patPrice = ‘"view_price":"(.*?)","‘ rawPrices = re.compile(patPrice).findall(data) patNick = ‘"nick"(.*?)","‘ rawNicks = re.compile(patNick).findall(data) for i in range(0,len(titles)): print("-------------------") print("第" + str(j+1) + "页,第" + str(i+1) + "本" ) #print(titles[i]) print(rawTitles[i]) print(rawImages[i]) print(rawPrices[i]) print(rawNicks[i]) print("-------------------") prePage = 44 * j curPage = 44 + prePage except urllib.error.URLError as e: if hasattr(e,"code"): print(e.code) if hasattr(e,"reason"): print(e.reason) except Exception as e: print(e)