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创建xml的方法
Mar 10 Python
Python制作爬虫采集小说
Oct 25 Python
Python进阶-函数默认参数(详解)
May 18 Python
Python使用type关键字创建类步骤详解
Jul 23 Python
python列表插入append(), extend(), insert()用法详解
Sep 14 Python
Python从入门到精通之环境搭建教程图解
Sep 26 Python
使用Python实现批量ping操作方法
May 06 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
Jun 29 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
Python+unittest+requests+excel实现接口自动化测试框架
Dec 23 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 Python
Python可视化学习之seaborn绘制矩阵图详解
Feb 24 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/06/09 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
php中yii框架实例用法
2020/12/22 PHP
JS 有名函数表达式全面解析
2010/03/19 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
2016/01/04 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
详解小程序如何改变onLoad的执行时机
2019/11/01 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
windows环境下tensorflow安装过程详解
2018/03/30 Python
人工神经网络算法知识点总结
2019/06/11 Python
PYTHON如何读取和写入EXCEL里面的数据
2019/10/28 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
如何在django中运行scrapy框架
2020/04/22 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
美国购车网站:TrueCar
2016/10/19 全球购物
商场活动策划方案
2014/01/24 职场文书
小学生读书感言
2014/02/12 职场文书
初中英语演讲稿
2014/04/29 职场文书
七一表彰大会简报
2015/07/20 职场文书
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫