zoukankan      html  css  js  c++  java
  • Python Urllib2和Cookielib的综合使用

    Python Urllib2和Cookielib的综合使用

    1. 手动添加请求的Headers,在opener,Request,urlopen,看看有几种方法可以使用相同的Headers处理不同的网页;
    2. 设定CookieJar,设定cookielib.Cookie()
    3. 手动添加Headers,并设定CookieJar,看看能否自动处理;

    1.手动添加Headers

    1.1 添加到opener上

    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor)
    opener.addheaders #此时会显示 "Python-urllib/2.7"
    opener.addheaders[0]=("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0") #把 user-agent变了
        #剩下的添加自己需要的内容,比如Cookie, X-Requested-With
    opener.addheaders.append(******,*******)
        #最后可以使用一个opener打开多个内容
    opener.open(url1)
    opener.open(url2)
    

    之后可以一直使用opener.open打开自己想要打开的网址,headers不需要每次都构建一次了。

    1.2 Request对象

    Request使用 urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable]) 进行创建,可以看出,url是必需的。所以构建一个Request对象只能打开一个网页。
    修改Request的Headers有两种方法

    • 直接修改Request.headers 这个字典
    • 使用Request.add_header添加一个header

    1.3 使用urllib2.urlopen(url[, data][, timeout])

    最简单打开一个网页的方法就是直接使用urllib2.urlopen,参数url可以是网址也可以是Request对象。很明显,也不能更换url,甚至不能更改headers。想要添加headers,需要在Request对象里更改。
    不过可以使用urllib2.install_opener(opener)修改默认的opener,在使用第一种方法设定好opener的headers后,就可以直接使用urlopen了。所有发送的请求都会自动带上opener的headers。

    2 cookielib和CookieJar自动处理

  • 相关阅读:
    网络图片获取工具类
    压缩、解压工具类
    字符串排序简单的工具类,数组转list,list转数组
    mysql 实现 sqlserver的row_number over() 方法
    Mysql安装配置及常见问题解决
    Mysql数据库主从配置
    PageHelper:在系统中发现了多个分页插件,请检查系统配置
    Kibana-Elasticsearch分析工具
    Elasticsearch基础环境配置和使用
    取消IDEA双击shift时出现的全局搜索
  • 原文地址:https://www.cnblogs.com/abcat/p/3702349.html
Copyright © 2011-2022 走看看