天天看点

Python Urllib2和Cookielib的综合使用Python Urllib2和Cookielib的综合使用

标签(空格分隔): Python Urllib2 Fetch

手动添加请求的Headers,在opener,Request,urlopen,看看有几种方法可以使用相同的Headers处理不同的网页;

设定CookieJar,设定cookielib.Cookie()

手动添加Headers,并设定CookieJar,看看能否自动处理;

1

2

3

4

5

6

7

8

<code>opener</code><code>=</code>

<code>urllib2.build_opener(urllib2.HTTPCookieProcessor)</code>

<code>opener.addheaders</code><code>#此时会显示 "Python-urllib/2.7"</code>

<code>opener.addheaders[</code><code>0</code><code>]</code><code>=</code><code>(</code><code>"User-Agent"</code><code>,</code><code>"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0"</code><code>)</code><code>#把 user-agent变了</code>

<code>    </code><code>#剩下的添加自己需要的内容,比如Cookie, X-Requested-With</code>

<code>opener.addheaders.append(</code><code>*</code><code>*</code><code>*</code><code>*</code><code>*</code><code>*</code><code>,</code><code>*</code><code>*</code><code>*</code><code>*</code><code>*</code><code>*</code><code>*</code><code>)</code>

<code>    </code><code>#最后可以使用一个opener打开多个内容</code>

<code>opener.</code><code>open</code><code>(url1)</code>

<code>opener.</code><code>open</code><code>(url2)</code>

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

Request使用 urllib2.Request(url[, data][, headers][, originreqhost][,

unverifiable]) 进行创建,可以看出,url是必需的。所以构建一个Request对象只能打开一个网页。

修改Request的Headers有两种方法

直接修改Request.headers 这个字典

使用Request.add_header添加一个header

最简单打开一个网页的方法就是直接使用urllib2.urlopen,参数url可以是网址也可以是Request对象。很明显,也不能更换url,甚至不能更改headers。想要添加headers,需要在Request对象里更改。

不过可以使用urllib2.install_opener(opener)修改默认的opener,在使用第一种方法设定好opener的headers后,就可以直接使用urlopen了。所有发送的请求都会自动带上opener的headers。

上一篇: Bridge 模式
下一篇: Subsets