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抓取京东价格分析京东商品价格走势
Jan 09 Python
python抓取网页图片示例(python爬虫)
Apr 27 Python
利用Python脚本生成sitemap.xml的实现方法
Jan 31 Python
python+matplotlib实现礼盒柱状图实例代码
Jan 16 Python
python中subprocess批量执行linux命令
Apr 27 Python
利用Django-environ如何区分不同环境
Aug 26 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
python得到qq句柄,并显示在前台的方法
Oct 14 Python
Python笔记之代理模式
Nov 20 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
python openssl模块安装及用法
Dec 06 Python
Python实现小黑屋游戏的完整实例
Jan 06 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程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
php实现统计邮件大小的方法
2013/08/06 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
PHP7 新增常量
2021/03/09 PHP
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
Python的pygame安装教程详解
2020/02/10 Python
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
入党积极分子介绍信
2014/01/17 职场文书
责任担保书范文
2014/05/21 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
房屋出售授权委托书
2014/10/12 职场文书
义诊活动总结
2015/02/04 职场文书
2015年电工工作总结
2015/04/10 职场文书
旅游项目合作意向书
2015/05/08 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL