utllib-cookie + utllib-error

utllib-cookie

from os.path import exists
from os import makedirs
from fake_useragent import UserAgent
from urllib import request
from urllib import parse
from http import cookiejar
from hashlib import md5


class UrllibCookie():
    def __init__(self, saveCookieDirPath, url):
        self.saveCookieDirPath = saveCookieDirPath
        self.url = url
        
        self.save()
    
    def getCookieFilePath(self):
        SplitResult = parse.urlsplit(self.url)
        SplitString = ''.join([SplitResult.scheme, '://', SplitResult.hostname])
        
        return self.saveCookieDirPath + '/' + md5(bytes(SplitString, encoding='utf-8')).hexdigest() + '.cookie'
    
    def save(self):
        cookie = cookiejar.MozillaCookieJar()
        handle = request.HTTPCookieProcessor(cookie)
        opener = request.build_opener(handle)
        
        opener.open(self.url)
        cookie.save(self.getCookieFilePath())
    
    def get(self):
        cookie = cookiejar.MozillaCookieJar()
        cookie.load(self.getCookieFilePath())
        
        return cookie


if __name__ == '__main__':
    cookieDirPath = '.cookie'
    
    if not exists(cookieDirPath):
        makedirs(cookieDirPath)
    
    o = UrllibCookie(cookieDirPath, 'https://tieba.baidu.com/index.html?traceid=')
    g = o.get()
    
    print(g)  # <Cookie BAIDUID=558E8D5FE58F96E5A78E9A63E1AE731B:FG=1 for .baidu.com/>

在这里插入图片描述

utllib-error

# CY3761 | 2021-11-27 10:30

from urllib import request
from urllib import error

urlItems = [
    'https://www.google.com',  # 国内无法直接访问
    'https://www.google.cn',  # 国内能访问
    'https://movie.douban.com',  # 需要头信息才能正确访问
]

for url in urlItems:
    print(url)
    
    try:
        res = request.urlopen(url)
    except error.HTTPError as e:  # 说明服务器是有能力响应, 只是某种原因拒绝了你的请求
        print(e)
    except error.URLError as e:  # 地址无法访问可能会触发
        print(e)
    else:
        print(res.code, len(res.read()))

在这里插入图片描述
utllib一般好用,很多处理需要封装

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CY3761

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值