python使用urllib模块和pyquery实现阿里巴巴排名查询

 更新时间:2014年01月16日 14:45:48   作者:  
这篇文章主要介绍了python库urllib及pyquery基本东西的应用,实现阿里巴巴关键词排名的查询,其中涉及到urllib代理的设置,pyquery对html文档的解析

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)

相关文章

  • Django后端发送小程序微信模板消息示例(服务通知)

    Django后端发送小程序微信模板消息示例(服务通知)

    今天小编就为大家分享一篇Django后端发送小程序微信模板消息示例(服务通知),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 浅谈一下Python中闭包的作用

    浅谈一下Python中闭包的作用

    这篇文章主要介绍了浅谈一下Python中闭包的作用,闭包特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变,需要的朋友可以参考下
    2023-12-12
  • Pytest中skip和skipif的具体使用方法

    Pytest中skip和skipif的具体使用方法

    在实际的测试中,我们经常会遇到需要跳过某些测试用例的情况,pytest提供了skip和ifskip来跳过测试.下面我们就来通过一些例子看看skip和ifskip具体如何使用吧,需要的朋友可以参考下
    2021-06-06
  • Pandas数据清洗函数总结

    Pandas数据清洗函数总结

    本文主要介绍了Pandas数据清洗函数总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Python pip通过requirements.txt 文件安装依赖

    Python pip通过requirements.txt 文件安装依赖

    requirements.txt是定义项目依赖的python包,可通过工具生成,本文主要介绍了Python pip通过requirements.txt文件安装依赖,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 详解Python利用random生成一个列表内的随机数

    详解Python利用random生成一个列表内的随机数

    这篇文章主要介绍了详解Python利用random生成一个列表内的随机数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 用python爬取租房网站信息的代码

    用python爬取租房网站信息的代码

    今天小编就为大家分享一篇关于用python爬取租房网站信息的代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Django1.7+python 2.78+pycharm配置mysql数据库

    Django1.7+python 2.78+pycharm配置mysql数据库

    这篇文章主要介绍了Django1.7+python 2.78+pycharm配置mysql数据库的相关资料,需要的朋友可以参考下
    2016-10-10
  • Python统计文件中去重后uuid个数的方法

    Python统计文件中去重后uuid个数的方法

    这篇文章主要介绍了Python统计文件中去重后uuid个数的方法,实例分析了Python正则匹配及字符串操作的相关技巧,需要的朋友可以参考下
    2015-07-07
  • 通过numba模块给Python代码提速的方法详解

    通过numba模块给Python代码提速的方法详解

    numba是Anaconda公司开发的针对Python的开源JIT编译器,用于提供Python版CPU和GPU编程,速度比原生Python快数十倍。本文将详细介绍一下numba是如何实现代码提速的,需要的可以参考一下
    2022-01-01

最新评论