Python查询阿里巴巴关键字排名的方法


Posted in Python onJuly 08, 2015

本文实例讲述了Python查询阿里巴巴关键字排名的方法。分享给大家供大家参考。具体如下:

这里使用python库urllib及pyquery基本东西的应用,实现阿里巴巴关键词排名的查询,其中涉及到urllib代理的设置,pyquery对html文档的解析

1. urllib 基础模块的应用,通过该类获取到url中的html文档信息,内部可以重写代理的获取方法

class ProxyScrapy(object):
  def __init__(self):
    self.proxy_robot = ProxyRobot()
    self.current_proxy = None
    self.cookie = cookielib.CookieJar()
  def __builder_proxy_cookie_opener(self):    
    cookie_handler = urllib2.HTTPCookieProcessor(self.cookie)
    handlers = [cookie_handler]
    if PROXY_ENABLE:
      self.current_proxy = ip_port = self.proxy_robot.get_random_proxy()
      proxy_handler = urllib2.ProxyHandler({'http': ip_port[7:]})
      handlers.append(proxy_handler)
    opener = urllib2.build_opener(*handlers)
    urllib2.install_opener(opener)
    return opener
  def get_html_body(self,url):
    opener = self.__builder_proxy_cookie_opener()
    request=urllib2.Request(url)
    #request.add_header("Accept-Encoding", "gzip,deflate,sdch")
    #request.add_header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
    #request.add_header("Cache-Control", "no-cache")
    #request.add_header("Connection", "keep-alive")
    try:
      response = opener.open(request,timeout=2)
      http_code = response.getcode()
      if http_code == 200:
        if PROXY_ENABLE:
          self.proxy_robot.handle_success_proxy(self.current_proxy)
        html = response.read()
        return html
      else:
        if PROXY_ENABLE:
          self.proxy_robot.handle_double_proxy(self.current_proxy)
        return self.get_html_body(url)
    except Exception as inst:
      print inst,self.current_proxy
      self.proxy_robot.handle_double_proxy(self.current_proxy)
      return self.get_html_body(url)

2. 根据输入的公司名及关键词列表,返回每个关键词的排名

def search_keywords_rank(keyword_company_name, keywords):
  def get_context(url):
    start=clock()
    html=curl.get_html_body(url)
    finish=clock()
    print url,(finish-start)
    d = pq(html)
    items = d("#J-items-content .ls-item")
    items_c = len(items)
    print items_c
    if items_c < 38:
      return get_context(url)
    return items, items_c
  result = OrderedDict()
  for keyword in keywords:
    for page_index in range(1,9):
      u = url % (re.sub('\s+', '_', keyword.strip()), page_index)
      items, items_c = get_context(u)
      b = False
      for item_index in range(0, items_c):
        e=items.eq(item_index).find('.title a')
        p_title = e.text()
        p_url = e.attr('href')
        e=items.eq(item_index).find('.cright h3 .dot-product')
        company_name = e.text()
        company_url = e.attr('href')
        if keyword_company_name in company_url:
          total_index = (page_index-1)*38 +item_index+1+(0 if page_index==1 else 5)
          print 'page %s, index %s, total index %s' % (page_index, item_index+1, total_index)
          b = True
          if keyword not in result:
            result[keyword] = (p_title, p_url, page_index, item_index+1, total_index, u)
          break
      if b:
        break
  return result

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
基于Python实现的扫雷游戏实例代码
Aug 01 Python
Django Admin 实现外键过滤的方法
Sep 29 Python
详解python OpenCV学习笔记之直方图均衡化
Feb 08 Python
Python对List中的元素排序的方法
Apr 01 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
对python指数、幂数拟合curve_fit详解
Dec 29 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
使用python实现unix2dos和dos2unix命令的例子
Aug 13 Python
用python3 urllib破解有道翻译反爬虫机制详解
Aug 14 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
Feb 17 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
浅谈Python中的闭包
Jul 08 #Python
Python中atexit模块的基本使用示例
Jul 08 #Python
python登录豆瓣并发帖的方法
Jul 08 #Python
python发送HTTP请求的方法小结
Jul 08 #Python
python友情链接检查方法
Jul 08 #Python
Python抓取百度查询结果的方法
Jul 08 #Python
Python抓取淘宝下拉框关键词的方法
Jul 08 #Python
You might like
PHP常用的缓存技术汇总
2014/05/05 PHP
WordPress中限制非管理员用户在文章后只能评论一次
2015/12/31 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
jQuery each()小议
2010/03/18 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
亲自动手实现vue日历控件
2019/06/26 Javascript
详解Vue之计算属性
2020/06/20 Javascript
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
Python NumPy库安装使用笔记
2015/05/18 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
Python实现新型冠状病毒传播模型及预测代码实例
2020/02/05 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
韩国著名的在线综合购物网站:Akmall
2016/08/07 全球购物
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
电子专业推荐信范文
2013/11/18 职场文书
语文教育专业推荐信范文
2013/11/25 职场文书
单位未婚证明范本
2014/01/18 职场文书
《桃林那间小木屋》教学反思
2014/05/01 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书