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中的序列化存储的方法
Apr 28 Python
Python基于PycURL实现POST的方法
Jul 25 Python
各个系统下的Python解释器相关安装方法
Oct 12 Python
Django查询数据库的性能优化示例代码
Sep 24 Python
python3利用tcp实现文件夹远程传输
Jul 28 Python
pytorch: Parameter 的数据结构实例
Dec 31 Python
Java ExcutorService优雅关闭方式解析
May 30 Python
keras实现theano和tensorflow训练的模型相互转换
Jun 19 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 Python
python基于tkinter制作无损音乐下载工具
Mar 29 Python
python爬取企查查企业信息之selenium自动模拟登录企查查
Apr 08 Python
python基于turtle绘制几何图形
Jun 15 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解答方法
2012/02/04 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
总结一些PHP中好用但又容易忽略的小知识
2017/06/02 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
JavaScript中提前声明变量或函数例子
2014/11/12 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
jQuery在线选座位插件seat-charts特效代码分享
2015/08/27 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
BootStrap selectpicker
2016/06/20 Javascript
总结Node.js中的一些错误类型
2016/08/15 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
JavaScript WeakMap使用详解
2021/02/05 Javascript
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
利用python和百度地图API实现数据地图标注的方法
2019/05/13 Python
Django Rest framework频率原理与限制
2019/07/26 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
大学学习生活感言
2014/01/18 职场文书
运动会演讲稿
2014/05/07 职场文书
环保倡议书400字
2014/05/15 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
中层领导干部群众路线对照检查材料思想汇报
2014/10/02 职场文书
高三语文复习计划
2015/01/19 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
新学期开学标语2015
2015/07/16 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书