zoukankan      html  css  js  c++  java
  • 1-urllib库的使用

    【Python3网络爬虫】1-urllib库的使用

    内置模块介绍

    Python内置的HTTP请求库,包含四个模块

    • error异常处理模块,如果出现请求错误,我们可以捕获这些异常,然后进行重试或其他操作以保证程序不会意外终止。

    • parse一个工具模块,提供了许多URL处理方法,比如拆分、解析、合并等。

    • request它是最基本的HTTP请求模块,可以用来模拟发送请求。就像在浏览器里输入网址然后回车一样,只需要给库方法传入URL以及额外的参数,就可以模拟实现这个过程了。

    • response最基本的HTTP响应模块

    • robotparser主要是用来识别网站的robots.txt文件,然后判断哪些网站可以爬,哪些网站不可以爬,它其实用得比较少。

    请求头的设置

    from urllib.request import urlopen
    from urllib.request import Request
    
    url = "http://www.baidu.com"
    # 当不设置User-Agent,容易被识别
    headers = {
        'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) '
                      'Chrome/78.0.3904.97 Mobile Safari/537.36 '
    }
    request = Request(url, headers=headers)
    response = urlopen(request)
    info = response.read()
    # 注意,这里只能是User-agent
    print(request.get_header('User-agent'))
    print(info)
    

    请求头,利用fake_useragent获取UserAgent

    from fake_useragent import UserAgent
    
    ua = UserAgent()
    print(ua.chrome)
    print(ua.opera)
    print(ua.firefox)
    

    代理设置

    代理网站

    https://www.kuaidaili.com/free/
    https://www.xicidaili.com/nt/
    
    from urllib.request import Request
    from urllib.request import build_opener
    from urllib.request import ProxyHandler
    from fake_useragent import UserAgent
    
    url = "http://httpbin.org/get"
    headers = {
        'User-Agent': UserAgent().chrome
    }
    request = Request(url, headers=headers)
    handler = ProxyHandler({
        "http": "112.95.23.90:8888"
    })
    opener = build_opener(handler)
    response = opener.open(request)
    print(response.read().decode())
    

    cookie的设置

    from urllib.request import HTTPCookieProcessor
    from urllib.request import build_opener
    from urllib.request import Request
    from http.cookiejar import MozillaCookieJar
    from fake_useragent import UserAgent
    
    
    # 保存cookie
    def get_cookie():
        url = "http://baidu.com"
        headers = {
            'User-Agent': UserAgent().chrome
        }
        request = Request(url, headers=headers)
        cookie_jar = MozillaCookieJar()
        handler = HTTPCookieProcessor(cookie_jar)
        opener = build_opener(handler)
        response = opener.open(request)
        cookie_jar.save("cookie.txt", ignore_expires=True, ignore_discard=True)
        
        
    if __name__ == '__main__':
        get_cookie()
    

    异常处理URLError

    from urllib.request import Request, urlopen, URLError
    from fake_useragent import UserAgent
    
    url = "https://missj.top/adda"
    headers = {
        'User-Agent': UserAgent().chrome
    }
    try:
        req = Request(url, headers=headers)
        resp = urlopen(req)
        print(resp.read().decode())
    except URLError as e:
        if e.args == ():
            print(e.code)
        else:
            print(e.args[0].errno)
    

    原文

  • 相关阅读:
    javascript静态页面传值的三种方法分享
    分布式缓存HttpRuntime.cache应用到单点登陆中_优化登陆
    C# 委托的三种调用示例(同步调用 异步调用 异步回调)
    使用SQL Server视图的优缺点
    浅析深究什么是SOA?
    IIS启用GZip压缩
    BI
    ASP.NET运行原理
    力扣算法:N 皇后
    力扣算法:基本计算器Ⅱ
  • 原文地址:https://www.cnblogs.com/missj/p/12814755.html
Copyright © 2011-2022 走看看