python爬虫学习7

python爬虫学习7

  • opener
    • opener位于urlopen中,有时我们不使用urlopen()方法,而是直接构造opener。

在这里插入图片描述

  • opener的构造
import urllib.request

url = 'https://www.baidu.com'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.12151 SLBChan/11'}

# 构建请求对象
req = urllib.request.Request(url,headers=headers)

# 获取opener对象
opener = urllib.request.build_opener()

resp = opener.open(req)
print(resp.read().decode('utf-8'))

运行结果:
在这里插入图片描述

  • 使用Cookie
    • 获取网站Cookie
    # 使用Cookie需要用到相关的 Handler。
    
    import http.cookiejar,urllib.request
    
    url = 'https://www.baidu.com'
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.12151 SLBChan/11'}
    req = urllib.request.Request(url,headers=headers)
    
    # 声明CookieJar对象
    cookie = http.cookiejar.CookieJar()
    
    # 利用 HTTPCookieProcessor 构件一个 Handler
    handler = urllib.request.HTTPCookieProcessor(cookie)
    
    # 构件 opener
    opener = urllib.request.build_opener(handler)
    resp = opener.open(req)
    
    for i in cookie:
        print(i.name+'='+i.value)
        
    
    

    运行结果:
    在这里插入图片描述

    • 保存cookie到磁盘
    import http.cookiejar,urllib.request
    
    filename = 'cookie.txt'
    url = 'https://www.baidu.com'
    
    # 获取 cookie
    def get_cookie():
        # 实例化一个 MozillaCookieJar
        cookie = http.cookiejar.MozillaCookieJar(filename)
        # 创建 Handler
        handler = urllib.request.HTTPCookieProcessor(cookie)
        # 构件 opener
        opener = urllib.request.build_opener(handler)
        # 发送请求
        resp = opener.open(url)
        # 存储
        cookie.save()
    
    if __name__ == '__main__':
        get_cookie()
    

    运行后可以看到当前目录下出现了一个名为cookie.txt的文件,打开后内容如下:

在这里插入图片描述

未完,明日继续,,,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值