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生成IP段的方法
Jul 07 Python
Python基于动态规划算法计算单词距离
Jul 25 Python
Python实现模拟登录网易邮箱的方法示例
Jul 05 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
Jul 07 Python
对Python中for复合语句的使用示例讲解
Nov 01 Python
python如何实现一个刷网页小程序
Nov 27 Python
Python检查ping终端的方法
Jan 26 Python
Python 3 实现定义跨模块的全局变量和使用教程
Jul 07 Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 Python
pytorch 模型可视化的例子
Aug 17 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
Aug 20 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 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作的文本留言本的例子(四)
2006/10/09 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
MooTools 1.2介绍
2009/09/14 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
javascript判断ie浏览器6/7版本加载不同样式表的实现代码
2011/12/26 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
关闭浏览器时提示onbeforeunload事件
2013/12/25 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
在Express中提供静态文件的实现方法
2019/10/17 Javascript
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
快速入手Python字符编码
2016/08/03 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
Python常见内置高效率函数用法示例
2018/07/31 Python
python SVD压缩图像的实现代码
2019/11/05 Python
Django 自动生成api接口文档教程
2019/11/19 Python
工地安全检查制度
2014/02/04 职场文书
高中历史教学反思
2014/02/08 职场文书
营销总监岗位职责范本
2014/02/26 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
质量负责人任命书
2014/06/06 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
2014年工程部工作总结
2014/11/25 职场文书
环境建议书
2015/02/04 职场文书
技术员个人工作总结
2015/03/03 职场文书
科技活动总结范文
2015/05/11 职场文书
Python爬虫实战之爬取京东商品数据并实实现数据可视化
2021/06/07 Python
Redis可视化客户端小结
2021/06/10 Redis