python 抓取google play 各搜索词排名
来源:互联网 发布:webstorm js文件编码 编辑:程序博客网 时间:2024/04/28 23:32
背景:
做app推广的时候需要看各 搜索词搜到的各app的排名
需要的结果:
- 在https://play.google.com/apps 中搜索某关键词,如browser
- 抓取页面返回的所有app,并保存对应的位置即排名
主要实现是用httplib2 抓取页面,用lxml解析页面。
import base import httplib2 import lxmlimport reimport timefrom lxml import etreefrom urllib import urlencodefrom httplib2 import socks APP_ID = '146'TOP_CNT = 200GP_SEARCH_URL = 'https://play.google.com/store/search'TABLE = 'gp_keyword_ranking'PROXY_HOST = '115.29.170.73'PROXY_PORT = 2080 def get_pack(url_data): ''' get pack_names and pagtok from url '''
#用代理模拟在usa 访问google play proxy = httplib2.ProxyInfo(socks.PROXY_TYPE_SOCKS5, PROXY_HOST, PROXY_PORT) http=httplib2.Http(proxy_info = proxy) uri= '%s?%s' % (GP_SEARCH_URL, urlencode(url_data)) response,content=http.request(uri,'GET')
#etree解析html tree = etree.HTML(content) try: pack_names = tree.xpath( u'//div[@class="card-list two-cards"]/div/@data-docid') except: print 'get pack_names from uri:%s failed!!!!!!!!!!!'%uri return None, None try: script = tree.xpath(u'//div/script')[-1] script_text = script.text regex = re.compile(r'var nbp=\'(.*)\\n\';var') nbp = regex.search(script_text).group(1) nbp = eval(nbp.decode('unicode-escape').decode('unicode-escape')) pagtok = nbp[1] except Exception as e: print e print 'get pagTok from uri:%s failed!!!!!!!!!!!'% uri return pack_names, None return pack_names, pagtok<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
遇到的问题:
- 抓取数据的时候并不是抓包获取一个链接,访问了,就直接返回一串数据。需要先爬网页,然后再解析网页
- 抓取网页的时候不是访问一次就返回所有的数据,网站上的体验的往下拉页面的时候页面逐渐加载。
- 要看每次加载的时候网页请求有什么不一样,结果发现传了一个pagTok参数。
- 但是pagTok参数是从娜来的呢!因为这次的返回的结果是接在上次之后的,所以猜测这次的参数应该与上次访问的返回有关。在上次访问返回的content里面找到了相应的参数
- 之后第2,3.。。。。。次访问的时候就加上pagTok参数,即可获取要的数据
- 中间搜索词有空格的时候,参数无效,用以下方法解决
uri= '%s?%s' % (GP_SEARCH_URL, urlencode(url_data)) response,content=http.request(uri,'GET')
- 抓取的页面编码问题,用以下方法解决
<span style="white-space:pre"></span>nbp.decode('unicode-escape').decode('unicode-escape')<span style="font-family: Arial, Helvetica, sans-serif;"></span>
推荐链接:
解析内容时编码问题:http://stackoverflow.com/questions/23288042/i-want-to-decode-string-in-python
抓取网页:http://blog.csdn.net/gs_zhaoyang/article/details/13768925
代理设置:https://code.google.com/p/httplib2/wiki/Examples
0 0
- python 抓取google play 各搜索词排名
- python google play
- python抓取google结果
- Python 抓取google链接代码
- python抓取google搜索结果
- google play
- Google Play
- python抓取google链接原理详解
- 使用Python抓取google街景照片
- python抓取南阳理工学院ACM网站排名信息
- 提升应用在Google Play商店排名的10大免费策略
- Google 排名
- google排名
- VPN/GOOGLE/google play
- Google公布06年十大搜索词 “视频/video”居首
- Google play billing(Google play 内支付)
- Google play billing(Google play 内支付)
- Google Play 之 deviceId
- pdf中如何更改文字的颜色
- C语言中可变参数函数实现原理
- hibernate 常见问题一览
- 四则运算-逆波兰表达式
- 为打开新Activity动作添加动画效果
- python 抓取google play 各搜索词排名
- hessian入门与springMVC框架集成---客户端调用
- ZOJ 2588 Burning Bridges (Tarjan 求割边)
- 4、 列表
- 排序算法之——冒泡排序
- POJ 1018 Communication System(简单DP)
- javascript 实现简单 ajax 效果(不支持跨域)
- 第2周项目3-体验复杂度(1)
- LR脚本例子