urllib库认证,代理,cookie

认证,代理,cookie

 1from urllib.request import HTTPBasicAuthHandler, HTTPPasswordMgrWithDefaultRealm, build_opener
2from urllib.error import URLError
3from urllib import request,parse
4from urllib.request import ProxyHandler, build_opener
5import ssl
6import http.cookiejar, urllib.request
7
8ssl._create_default_https_context = ssl._create_unverified_context
9
10
11'''验证'''
12def studyAuth():
13    username = 'username'
14    password = 'password'
15    url = 'http://localhost:5000/'
16    p = HTTPPasswordMgrWithDefaultRealm()
17    p.add_password(None, url, username, password)
18    auth_handle = HTTPBasicAuthHandler(p)
19    opener = build_opener(auth_handle)
20
21    try:
22        result = opener.open(url)
23        html = result.read().decode('utf-8')
24        print(html)
25    except URLError as  e:
26        print(e.reason)
27
28studyAuth()
29
30'''代理'''
31def studyProxy():
32    proxy_handle = ProxyHandler({
33        'http''http:127.0.0.1:9743',
34        'https''https:127.0.0.1:9743'
35    })
36    opener = build_opener(proxy_handle)
37    try:
38        response = opener.open('https://www.baidu.com')
39        print(response.read().decode('utf-8'))
40    except URLError as e:
41        print(e.reason)
42
43studyProxy()
44
45'''cookie'''
46def studyCookie():
47    cookie = http.cookiejar.CookieJar()
48    handle = urllib.request.HTTPCookieProcessor(cookie)
49    opener = urllib.request.build_opener(handle)
50    response = opener.open('https://www.baidu.com')
51    for item in cookie:
52        print(item.name)
53        print(item.value)
54        print(item.name + '=' + item.value)
55
56def studyCookie1():
57    filename = 'cookie.txt'
58    cookie = http.cookiejar.LWPCookieJar(filename)
59#   cookie = http.cookiejar.MozillaCookieJar(filename)
60    handle = urllib.request.HTTPCookieProcessor(cookie)
61    opener = urllib.request.build_opener(handle)
62    response = opener.open('http://www.baidu.com')
63    cookie.save(ignore_discard=True, ignore_expires=True)
64
65'''读取利用生成的cookie文件'''
66def studyCookie2():
67    cookie = http.cookiejar.LWPCookieJar()
68    cookie.load('cookie.txt', ignore_expires=True, ignore_discard=True)
69    handle = urllib.request.HTTPCookieProcessor(cookie)
70    opener = urllib.request.build_opener(handle)
71    response = opener.open('http://www.baidu.com')
72    print(response.read().decode('utf-8'))
73
74studyCookie2()

转载于:https://www.cnblogs.com/gxj521test/p/10206519.html

### 回答1: 可以使用urllib中的HTTPCookieProcessor和urllib.request.build_opener()方法来自动保存cookie。 具体步骤如下: 1. 导入urllib中的HTTPCookieProcessor和urllib.request.build_opener()方法。 2. 创建一个CookieJar对象,用于保存cookie。 3. 创建一个HTTPCookieProcessor对象,并将CookieJar对象作为参数传入。 4. 使用urllib.request.build_opener()方法创建一个opener对象,并将HTTPCookieProcessor对象作为参数传入。 5. 使用opener对象发送请求,自动保存cookie。 示例代码如下: import urllib.request import http.cookiejar # 创建一个CookieJar对象,用于保存cookie cookie_jar = http.cookiejar.CookieJar() # 创建一个HTTPCookieProcessor对象,并将CookieJar对象作为参数传入 cookie_processor = urllib.request.HTTPCookieProcessor(cookie_jar) # 使用urllib.request.build_opener()方法创建一个opener对象,并将HTTPCookieProcessor对象作为参数传入 opener = urllib.request.build_opener(cookie_processor) # 使用opener对象发送请求,自动保存cookie response = opener.open('http://www.example.com') # 打印cookie for cookie in cookie_jar: print(cookie) ### 回答2: Python 是一种高级编程语言,非常适合进行网络数据爬取和处理。而在 Python 爬虫中,urllib 是一个重要的,可以帮助我们轻松实现网页数据的请求和处理。 在进行 Python 爬虫开发时,有时需要保存 cookie ,以便之后再次使用,这在从网站中获取数据时非常有用。为了自动保存 cookie ,可以在 urllib 中使用 Request 类中的 http.cookiejar.CookieJar() 对象。 下面是一份用 Python 编写自动保存 cookie 的示例代码: ```python import urllib.request, http.cookiejar cookiejar = http.cookiejar.CookieJar() cookie_support = urllib.request.HTTPCookieProcessor(cookiejar) opener = urllib.request.build_opener(cookie_support, urllib.request.HTTPHandler) urllib.request.install_opener(opener) # 发送请求,并保存 cookie 信息 response = urllib.request.urlopen('http://www.baidu.com') for cookie in cookiejar: print('Name: ' + cookie.name) print('Value: ' + cookie.value) print('Host: ' + cookie.domain) print('Path: ' + cookie.path) # 保存 cookie 到文件 filename = 'cookie.txt' cookiejar.save(filename, ignore_discard=True, ignore_expires=True) ``` 在上面的代码中,首先创建了一个 CookieJar 对象,并将其作为参数传递给了 HTTPCookieProcessor 对象,然后使用 build_opener() 方法将其与 HTTP 请求处理器结合起来,并将其安装到全局 urllib.request 中。接下来,通过 urlopen() 方法向百度发送请求,并将返回的 cookie 信息保存到 CookieJar 对象中。最后,使用 save() 方法将 cookie 信息保存到 cookie.txt 文件中,并将 ignore_discard 和 ignore_expires 参数都设置为 True,以保证保存所有的 cookie 信息。 通过使用上述代码,我们可以轻松实现 Python 爬虫自动保存 cookie 的功能。同时,如果在后续的爬虫开发中需要使用之前保存的 cookie ,只需要将其从文件中读取并加载到 CookieJar 对象中即可。 ### 回答3: 在进行Python爬虫开发时,经常需要使用到urllib来发送http请求。而使用urllib发送的请求需要携带cookie,否则很多网站并不会认为用户已经登录,这样就会导致后续的操作受到限制。因此,在Python编写爬虫程序时,自动保存cookie就显得非常重要了,这样可以帮助我们实现更高效、稳定的爬虫程序。 首先,我们需要在Python中使用urllib发送http请求获取cookie,这可以通过代码如下实现: ``` import urllib.request import http.cookiejar def get_cookie(): # 创建cookie实例 cookie = http.cookiejar.CookieJar() handler = urllib.request.HTTPCookieProcessor(cookie) opener = urllib.request.build_opener(handler) # 发送请求 response = opener.open('http://www.example.com') # 输出得到的cookie for item in cookie: print(item.name + "=" + item.value) ``` 上述代码使用了Python中内置的cookiejar来创建一个cookie实例,并使用HTTPCookieProcessor来处理发送请求时所携带的cookie。最后我们可以使用for循环来遍历返回的cookie。 当然,如果我们需要将cookie保存下来,稍作处理,方便后续的使用,我们可以对上述代码进行一定的修改,如下: ``` import urllib.request import http.cookiejar def save_cookie(): filename = 'cookie.txt' # 创建MozillaCookieJar实例 cookie = http.cookiejar.MozillaCookieJar(filename) handler = urllib.request.HTTPCookieProcessor(cookie) opener = urllib.request.build_opener(handler) # 发送请求 response = opener.open('http://www.example.com') # 保存cookie到文件 cookie.save(ignore_discard=True, ignore_expires=True) ``` 在上述代码中,我们在创建cookie实例时,使用了MozzillaCookieJar,这是一个专门用于保存cookie的对象,它可以直接将cookie保存到文件中。在进行cookie保存时,我们可以忽略掉cookie过期的时间,以及当窗口关闭时cookie是否自动清除的属性。最后,我们可以使用cookie.save()函数直接将cookie保存到文件中。 除了上述的方法,我们还可以在cookie文件中查找到需要用到的cookie值,这可以通过如下代码实现: ``` import urllib.request import http.cookiejar def load_cookie(): filename = 'cookie.txt' # 创建MozillaCookieJar实例 cookie = http.cookiejar.MozillaCookieJar() cookie.load(filename, ignore_discard=True, ignore_expires=True) handler = urllib.request.HTTPCookieProcessor(cookie) opener = urllib.request.build_opener(handler) # 发送请求 response = opener.open('http://www.example.com') # 输出返回的结果 print(response.read().decode('utf-8')) ``` 上述代码中,我们可以通过调用cookie.load()函数,从之前保存的cookie文件中读取出cookie数据,然后使用HTTPCookieProcessor来处理发送请求时所携带的cookie,并使用build_opener创建对应的opener对象,以访问目标网站。最后我们可以通过response.read()方法得到服务器返回的结果,然后进行后续处理。 总的来说,自动保存cookie可以帮助我们更加轻松、高效地使用Python进行爬虫开发,同时也可以提高爬虫程序的稳定性。如果我们能够正确地使用上述方法,相信自动保存cookie在爬虫程序开发中将会发挥不可替代的作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值