> 백엔드 개발 > 파이썬 튜토리얼 > Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명

Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명

coldplay.xixi
풀어 주다: 2021-03-21 15:15:58
앞으로
4781명이 탐색했습니다.

Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명

기사 디렉토리

  • urllib
  • 요청 모듈
    • 액세스 URL
    • 요청 클래스
    • 기타 클래스
  • 구문 분석 모듈
    • URL 구문 분석
    • Escape URL
  • robots.txt 파일

(무료 학습 권장 사항: python 비디오 튜토리얼)

urllib


urllib은 Python 패키지에서 URL을 처리하는 데 사용되는 도구입니다. , 소스 코드는 /Lib/ 아래에 있습니다. 여기에는 여러 모듈이 포함되어 있습니다. URL을 열고 읽고 쓰는 데 사용되는 request 모듈, request 모듈로 인해 예외를 발생시키는 error 모듈, parse 모듈은 URL을 구문 분석하는 데 사용되고, response 모듈은 응답 처리에 사용되고, robotparser 모듈은 로봇을 분석하는 데 사용됩니다. .txt 파일. urllib是Python中用来处理URL的工具包,源码位于/Lib/下。它包含了几个模块:用于打开及读写的urls的request模块、由request模块引起异常的error模块、用于解析urls的parse模块、用于响应处理的response模块、分析robots.txt文件的robotparser模块。

注意版本差异。urllib有3个版本:Python2.X包含urlliburllib2模块,Python3.X把urlliburllib2以及urlparse合成到urllib包中,而urllib3是新增的第三方工具包。若遇到"No module named urllib2"等问题几乎都是Python版本不同导致的。

urllib3是一个功能强大、条例清晰、用于HTTP客户端的Python库。它提供了许多Python标准库里所没有的特性:压缩编码、连接池、线程安全、SSL/TLS验证、HTTP和SCOCKS代理等。可以通过pip进行安装:pip install urllib3
Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명
也可以通过GitHub下载最新代码:

git clone git://github.com/shazow/urllib3.git
python setup.py install
로그인 후 복사

urllib3参考文档:https://urllib3.readthedocs.io/en/latest/

request模块


urllib.request模块定义了身份认证、重定向、cookies等应用中打开url的函数和类。

再简单介绍下request包,该包用于高级的非底层的HTTP客户端接口,容错能力比request模块强大。request使用的是urllib3,它继承了urllib2的特性,支持HTTP连接保持和连接池,支持使用cookie保持会话、文件上传、自动解压缩、Unicode响应、HTTP(S)代理等。更多具体可参考文档http://requests.readthedocs.io。

下面将介绍urllib.request模块常用函数和类。

访问URL


一、urlopen()

urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault=false,context=None)
로그인 후 복사

该函数用于抓取URL数据,十分重要。带有如上所示的参数,除了URL参数外(字符串或Request对象)其余参数都有默认值。

①URL参数

from urllib import requestwith request.urlopen("http://www.baidu.com") as f:
    print(f.status)
    print(f.getheaders())#运行结果如下200[('Bdpagetype', '1'), ('Bdqid', '0x8583c98f0000787e'), ('Cache-Control', 'private'), ('Content-Type', 'text/html;charset=utf-8'), ('Date', 'Fri, 19 Mar 2021 08:26:03 GMT'), ('Expires', 'Fri, 19 Mar 2021 08:25:27 GMT'), ('P3p', 'CP=" OTI DSP COR IVA OUR IND COM "'), ('P3p', 'CP=" OTI DSP COR IVA OUR IND COM "'), ('Server', 'BWS/1.1'), ('Set-Cookie', 'BAIDUID=B050D0981EE3A706D726852655C9FA21:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com'), ('Set-Cookie', 'BIDUPSID=B050D0981EE3A706D726852655C9FA21; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com'), ('Set-Cookie', 'PSTM=1616142363; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com'), ('Set-Cookie', 'BAIDUID=B050D0981EE3A706FA20DF440C89F27F:FG=1; max-age=31536000; expires=Sat, 19-Mar-22 08:26:03 GMT; domain=.baidu.com; path=/; version=1; comment=bd'), ('Set-Cookie', 'BDSVRTM=0; path=/'), ('Set-Cookie', 'BD_HOME=1; path=/'), ('Set-Cookie', 'H_PS_PSSID=33272_33710_33690_33594_33600_33624_33714_33265; path=/; domain=.baidu.com'), ('Traceid', '161614236308368819309620754845011048574'), ('Vary', 'Accept-Encoding'), ('Vary', 'Accept-Encoding'), ('X-Ua-Compatible', 'IE=Edge,chrome=1'), ('Connection', 'close'), ('Transfer-Encoding', 'chunked')]
로그인 후 복사

②data参数
如果向服务器发送数据,那么data参数必须是一个有数据的byes对象,否则为None。在Python3.2之后可以是一个iterable对象。若是,则headers中必须带有Content-Length参数。HTTP请求使用POST方法时,data必须有数据;使用GET方法时,data写None即可。

from urllib import parsefrom urllib import request
data = bytes(parse.urlencode({"pro":"value"}),encoding="utf8")response = request.urlopen("http://httpbin.org/post",data=data)print(response.read())#运行结果如下b'{\n  "args": {}, \n  "data": "", \n  "files": {}, \n  "form": {\n    "pro": "value"\n  }, \n  "headers": {\n    "Accept-Encoding": "identity", \n    "Content-Length": "9", \n    "Content-Type": "application/x-www-form-urlencoded", \n    "Host": "httpbin.org", \n    "User-Agent": "Python-urllib/3.9", \n    "X-Amzn-Trace-Id": "Root=1-60545f5e-7428b29435ce744004d98afa"\n  }, \n  "json": null, \n  "origin": "112.48.80.243", \n  "url": "http://httpbin.org/post"\n}\n'
로그인 후 복사

对数据进行POST请求,需要转码bytes类型或者iterable类型。这里通过bytes()进行字节转换,考虑到第一个参数为字符串,所以需要利用parse模块(下面会讲)的urlencode()方法对上传的数据进行字符串转换,同时指定编码格式为utf8。测试网址httpbin.org可以提供HTTP测试,从返回的内容可以看出提交以表单form作为属性、以字典作为属性值。

③timeout参数
该参数是可选的,以秒为单位指定一个超时时间,若超过该时间则任何操作都会被阻止,如果没有指定,那么默认会取sock.GLOBAL_DEFAULT_TIMEOUT对应的值。该参数仅对http、https、ftp连接有效。

超时后会抛出urllib.error.URLError:异常,可以用try…except来处理异常。

from urllib import request
response = request.urlopen("http://httpbin.org/get",timeout=1)print(response.read())#运行结果如下b'{\n  "args": {}, \n  "headers": {\n    "Accept-Encoding": "identity", \n    "Host": "httpbin.org", \n    "User-Agent": "Python-urllib/3.9", \n    "X-Amzn-Trace-Id": "Root=1-605469dd-76a6d963171127c213d9a9ab"\n  }, \n  "origin": "112.48.80.243", \n  "url": "http://httpbin.org/get"\n}\n'
로그인 후 복사

④返回对象的常用方法和属性
除了前三个urlopen()

버전 차이에 주의하세요. urllib에는 세 가지 버전이 있습니다. Python2.X에는 urlliburllib2 모듈과 Python3.code>urllib2 및 urlparse는 urllib 패키지로 통합되는 반면, urllib3는 새로운 타사 도구 패키지입니다. "urllib2라는 모듈이 없습니다"와 같은 문제가 발생하면 거의 항상 다른 Python 버전으로 인해 발생합니다.
  • urllib3는 HTTP 클라이언트를 위한 강력하고 잘 정의된 Python 라이브러리입니다. 압축 인코딩, 연결 풀링, 스레드 안전, SSL/TLS 인증, HTTP 및 SCOCKS 프록시 등 Python 표준 라이브러리에는 없는 많은 기능을 제공합니다. pip를 통해 설치할 수 있습니다: pip install urllib3
  • 여기에 이미지 설명 삽입
  • GitHub를 통해 최신 코드를 다운로드할 수도 있습니다:
from urllib import request
response = request.urlopen("http://httpbin.org/get")print(response.geturl())print("===========")print(response.info())print("===========")print(response.getcode())print("===========")print(response.status)print("===========")print(response.msg)
로그인 후 복사
  • urllib3 참조 문서: https://urllib3.readthedocs.io/en/latest/
  • request 모듈
  • urllib.request 이 모듈은 신원 인증, 리디렉션, 쿠키 등 애플리케이션에서 URL을 열기 위한 함수와 클래스를 정의합니다.
    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명 request 패키지를 간략하게 소개하겠습니다. 이 패키지는 고급 비저수준 HTTP 클라이언트 인터페이스에 사용되며 request 모듈보다 더 강력합니다. 요청은 urllib2의 기능을 상속하고, HTTP 연결 유지 관리 및 연결 풀링을 지원하고, 쿠키를 사용하여 세션 유지 관리, 파일 업로드, 자동 압축 풀기, 유니코드 응답, HTTP(S) 프록시를 지원하는 urllib3을 사용합니다. 등. . 자세한 내용은 http://requests.readthedocs.io 문서를 참조하세요.

    다음은 urllib.request 모듈에서 일반적으로 사용되는 함수와 클래스를 소개합니다. 🎜🎜🎜URL 액세스🎜🎜🎜🎜 1. urlopen()🎜
    urllib.request.build_opener([handler1 [handler2, ...]])
    로그인 후 복사
    로그인 후 복사
    🎜 이 함수는 URL 데이터를 캡처하는 데 사용되며 매우 중요합니다. 위에 표시된 매개변수를 사용하면 URL 매개변수(문자열 또는 요청 개체)를 제외한 나머지 매개변수에는 기본값이 있습니다. 🎜🎜①URL 매개변수🎜
    urllib.request.install_opener(opener)
    로그인 후 복사
    로그인 후 복사
    🎜②data 매개변수🎜 데이터가 서버로 전송되는 경우 데이터 매개변수는 데이터가 포함된 byes 객체여야 하며, 그렇지 않으면 None입니다. Python 3.2 이후에는 반복 가능한 객체가 될 수 있습니다. 그렇다면 헤더에 Content-Length 매개변수를 포함해야 합니다. HTTP 요청이 POST 메서드를 사용하는 경우 데이터에는 데이터가 있어야 하며, GET 메서드를 사용하는 경우 데이터를 None으로 쓸 수 있습니다. 🎜
    class urllib.request.Request(url,data=None,headers={},origin_req_host=None,unverifiable=False,method=None)
    로그인 후 복사
    로그인 후 복사
    🎜데이터에 대한 POST 요청을 만들려면 bytes 유형 또는 iterable 유형을 트랜스코딩해야 합니다. 여기서 바이트 변환은 bytes()를 통해 수행됩니다. 첫 번째 매개변수가 문자열이라는 점을 고려하면 구문 분석 모듈의 urlencode() 메서드를 사용해야 합니다(논의함). 아래) 업로드된 데이터는 문자열로 변환되며 인코딩 형식은 utf8로 지정됩니다. 테스트 웹사이트 httpbin.org는 반환된 콘텐츠에서 제출이 양식을 속성으로 사용하고 사전을 속성 값으로 사용하는 것을 볼 수 있습니다. 🎜🎜3timeout 매개변수🎜 이 매개변수는 선택사항입니다. 이 시간을 초과하면 모든 작업이 차단됩니다. 지정하지 않으면 기본값은 sock.GLOBAL_DEFAULT_TIMEOUT입니다. 이 매개변수는 http, https 및 ftp 연결에만 유효합니다. 🎜🎜시간 초과 후에 urllib.error.URLError: 예외가 발생합니다. try...Exception을 사용하여 예외를 처리할 수 있습니다. 🎜
    from urllib import requestfrom urllib import parse
    data = parse.urlencode({"name":"baidu"}).encode('utf-8')headers = {'User-Agent':'wzlodq'}req = request.Request(url="http://httpbin.org/post",data=data,headers=headers,method="POST")response = request.urlopen(req)print(response.read())#运行结果如下b'{\n  "args": {}, \n  "data": "", \n  "files": {}, \n  "form": {\n    "name": "baidu"\n  }, \n  "headers": {\n    "Accept-Encoding": "identity", \n    "Content-Length": "10", \n    "Content-Type": "application/x-www-form-urlencoded", \n    "Host": "httpbin.org", \n    "User-Agent": "wzlodq", \n    "X-Amzn-Trace-Id": "Root=1-605491a4-1fcf3df01a8b3c3e22b5edce"\n  }, \n  "json": null, \n  "origin": "112.48.80.34", \n  "url": "http://httpbin.org/post"\n}\n'
    로그인 후 복사
    로그인 후 복사
    🎜4객체의 공통 메소드 및 속성을 반환합니다🎜 처음 세 개의 urlopen() 공통 매개변수 외에도 이 함수는 컨텍스트 관리자(컨텍스트 관리자)로 사용되는 파일류 객체를 반환하고 다음 메소드가 포함되어 있습니다: 🎜🎜🎜geturl(): 요청된 URL을 반환합니다. 일반적으로 리디렉션된 URL을 얻을 수 있습니다. 🎜🎜info(): 원격 서버에서 반환된 헤더 정보를 나타내는 httplib.HTTPMessage 개체를 반환합니다. 🎜getcode(): 응답 후 HTTP 상태 코드를 반환🎜🎜status 속성: 응답 후 HTTP 상태 코드 반환🎜🎜msg 속성: 요청 결과🎜🎜
    from urllib import requestfrom urllib import parse
    data = bytes(parse.urlencode({'name':'baidu'}),encoding='utf-8')req = request.Request('http://httpbin.org/post',data,method='POST')req.add_header('User-agent','test')response = request.urlopen(req)print(response.read().decode('utf-8'))
    로그인 후 복사
    로그인 후 복사
    🎜실행 결과:🎜🎜🎜 첨부: 상태에 해당하는 상태 코드🎜
    • 1xx(informational):请求已经收到,正在进行中。
    • 2xx(successful):请求成功接收,解析,完成。
    • 3xx(Redirection):需要重定向。
    • 4xx(Client Error):客户端问题,请求存在语法错误,网址未找到。
    • 5xx(Server Error):服务器问题。

    二、build_opener()

    urllib.request.build_opener([handler1 [handler2, ...]])
    로그인 후 복사
    로그인 후 복사

    该函数不支持验证、cookie及其他HTTP高级功能。要支持这些功能必须使用build_opener()函数自定义OpenerDirector对象,称之为Opener。

    build_opener()函数返回的是OpenerDirector实例,而且是按给定的顺序链接处理程序的。作为OpenerDirector实例,可以从OpenerDirector类的定义看出他具有addheaders、handlers、handle_open、add_handler()、open()、close()等属性或方法。open()方法与urlopen()函数的功能相同。
    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명
    上述代码通过修改http报头进行HTTP高级功能操作,然后利用返回对象open()进行请求,返回结果与urlopen()一样,只是内存位置不同而已。

    实际上urllib.request.urlopen()方法只是一个Opener,如果安装启动器没有使用urlopen启动,调用的就是OpenerDirector.open()方法。那么如何设置默认全局启动器呢?就涉及下面的install_opener函数。

    三、install_opener()

    urllib.request.install_opener(opener)
    로그인 후 복사
    로그인 후 복사

    安装OpenerDirector实例作为默认全局启动器。
    首先导入request模块,实例化一个HTTPBasicAuthHandler对象,然后通过利用add_password()添加用户名和密码来创建一个认证处理器,利用urllib.request.build_opener()方法来调用该处理器以构建Opener,并使其作为默认全局启动器,这样Opener在发生请求时具备了认证功能。通过Opener的open()方法打开链接完成认证。

    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명
    当然了,CSDN不需要账号密码也可以访问,读者还可以在其他网站上用自己的账号进行测试。

    除了上述方法外,还有将路径转换为URL的pathname2url(path)、将URL转换为路径的url2pathname(path),以及返回方案至代理服务器URL映射字典的getproxies()等方法。

    Request类


    前面介绍的urlopen()方法可以满足一般基本URL请求,如果需要添加headers信息,就要考虑更为强大的Request类了。Request类是URL请求的抽象,包含了许多参数,并定义了一系列属性和方法。

    一、定义

    class urllib.request.Request(url,data=None,headers={},origin_req_host=None,unverifiable=False,method=None)
    로그인 후 복사
    로그인 후 복사
    • 参数url是有效网址的字符串,同urlopen()方法中一样,data参数也是。
    • headers是一个字典,可以通过add_header()以键值进行调用。通常用于爬虫爬取数据时或者Web请求时更改User-Agent标头值参数来进行请求。
    • origin_req_host是原始请求主机,比如请求的是针对HTML文档中的图像的,则该请求主机是包含图像页面所在的主机。
    • Unverifiable指示请求是否是无法验证的。
    • method指示使用的是HTTP请求方法。常用的有GET、POST、PUT、DELETE等,

    代码示例:

    from urllib import requestfrom urllib import parse
    data = parse.urlencode({"name":"baidu"}).encode('utf-8')headers = {'User-Agent':'wzlodq'}req = request.Request(url="http://httpbin.org/post",data=data,headers=headers,method="POST")response = request.urlopen(req)print(response.read())#运行结果如下b'{\n  "args": {}, \n  "data": "", \n  "files": {}, \n  "form": {\n    "name": "baidu"\n  }, \n  "headers": {\n    "Accept-Encoding": "identity", \n    "Content-Length": "10", \n    "Content-Type": "application/x-www-form-urlencoded", \n    "Host": "httpbin.org", \n    "User-Agent": "wzlodq", \n    "X-Amzn-Trace-Id": "Root=1-605491a4-1fcf3df01a8b3c3e22b5edce"\n  }, \n  "json": null, \n  "origin": "112.48.80.34", \n  "url": "http://httpbin.org/post"\n}\n'
    로그인 후 복사
    로그인 후 복사

    注意data参数和前面一样需是字节流类型的,不同的是调用Request类进行请求。

    二、属性方法

    ①Request.full_url
    full_url属性包含setter、getter和deleter。如果原始请求URL片段存在,那么得到的full_url将返回原始请求的URL片段,通过添加修饰器@property将原始URL传递给构造函数。
    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명

    ②Request.type:获取请求对象的协议类型。
    ③Request.host:获取URL主机,可能含有端口的主机。
    ④Request.origin_req_host:发出请求的原始主机,没有端口。
    ⑤Request.get_method():返回显示HTTP请求方法的字符串。
    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명

    插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/

    ⑥Request.add_header(key,val):向请求中添加标头。

    from urllib import requestfrom urllib import parse
    data = bytes(parse.urlencode({'name':'baidu'}),encoding='utf-8')req = request.Request('http://httpbin.org/post',data,method='POST')req.add_header('User-agent','test')response = request.urlopen(req)print(response.read().decode('utf-8'))
    로그인 후 복사
    로그인 후 복사

    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명
    上述代码中,通过add_header()传入了User-Agent,在爬虫过程中,常常通过循环调用该方法来添加不同的User-Agent进行请求,避免服务器针对某一User-Agent的禁用。

    其他类


    BaseHandler为所有注册处理程序的基类,并且只处理注册的简单机制,从定义上看,BaseHandler提供了一个添加基类的add_parent()方法,后面介绍的类都是继承该类操作的。

    • HTTPErrorProcessor:用于HTTP错误响应过程。
    • HTTPDefaultErrorHandler:用于处理HTTP响应错误。
    • ProxyHandler:用于设置代理。
    • HTTPRedirectHandler:用于设置重定向。
    • HTTPCookieProcessor:用于处理cookie。
    • HEEPBasicAuthHandler:用于管理认证。

    parse模块


    parse模块用于分解URL字符串为各个组成部分,包括寻址方案、网络位置、路径等,也可将这些部分组成URL字符串,同时可以对“相对URL"进行转换等。

    解析URL


    一、urllib.parse.urlparse(urlstring,scheme=’’,allow_fragments=True)
    解析URL为6个部分,即返回一个6元组(tuple子类的实例),tuple类具有下标所示的属性:

    属性 说明 对应下标指数 不存在时的取值
    scheme URL方案说明符 0 scheme参数
    netloc 网络位置部分 1 空字符串
    path 分层路径 2 空字符串
    params 最后路径元素的参数 3 空字符串
    query 查询组件 4 空字符串
    fragment 片段标识符 5 空字符串
    username 用户名
    None
    password 密码
    None
    hostname 主机名
    None
    port 端口号
    None

    最后组成的URL结构为scheme://netloc/path;parameters?query#fragment
    举个栗子:

    from urllib.parse import *res = urlparse('https://wzlodq.blog.csdn.net/article/details/113597816')print(res)print(res.scheme)print(res.netloc)print(res.path)print(res.params)print(res.query)print(res.username)print(res.password)print(res.hostname)print(res.port)print(res.geturl())print(tuple(res))print(res[0])print(res[1])print(res[2])
    로그인 후 복사

    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명
    需要注意的是urlparse有时并不能很好地识别netloc,它会假定相对URL以路径分量开始,将其取值放在path中。

    二、urllib.parse.urlunparse(parts)
    urlparse()的逆操作,即将urlparse()返回的原则构建一个URL。
    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명

    三、urllib.parse.urlsplit(urlstring,scheme=’’.allow_fragments=True)
    类似urlparse(),但不会分离参数,即返回的元组对象没有params元素,是一个五元组,对应下标指数也发生了改变。

    from urllib.parse import *sp = urlsplit('https://wzlodq.blog.csdn.net/article/details/113597816')print(sp)#运行结果如下SplitResult(scheme='https', netloc='wzlodq.blog.csdn.net', path='/article/details/113597816', query='', fragment='')
    로그인 후 복사

    四、urllib.parse.urlunsplit(parts)
    类似urlunparse(),是urlsplit()的逆操作,不再赘述。

    五、urllib.parse.urljoin(base,url,allow_fragments=True)
    该函数主要组合基本网址(base)与另一个网址(url)以构建新的完整网址。
    相对路径和绝对路径的url组合是不同的,而且相对路径是以最后部分路径进行替换处理的:
    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명

    六、urllib.parse.urldefrag(url)
    根据url进行分割,如果url包含片段标识符,就返回url对应片段标识符前的网址,fragment取片段标识符后的值。如果url没有片段标识符,那么fragment为空字符串。
    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명

    转义URL


    URL转义可以避免某些字符引起歧义,通过引用特殊字符并适当编排非ASCII文本使其作为URL组件安全使用。同时也支持反转这些操作,以便从URL组件内容重新创建原始数据。

    一、urllib.parse.quote(string,safe=’/’,encoding=None,errors=None)
    使用%xx转义替换string中的特殊字符,其中字母、数字和字符’_.-‘不会进行转义。默认情况下,此函数用于转义URL的路径部分,可选的safe参数指定不应转义的其他ASCII字符——其默认值为’/’。
    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명
    特别注意的是若string是bytes,encoding和errors就无法指定,否则报错TypeError。

    二、urllib.parse.unquote(string,encoding=‘utf-8’,errors=‘replace’)
    该函数时quote()的逆操作,即将%xx转义为等效的单字符。参数encoding和errors用来指定%xx编码序列解码为Unicode字符,同bytes.decode()方法。
    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명

    三、urllib.parse.quote_plus(string,safe=’’,encoding=None,errors=None)
    该函数时quote()的增强版,与之不同的是用+替换空格,而且如果原始URL有字符,那么+将被转义。
    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명

    四、urllib.parse.unquote_plus(string,encoding=‘utf-8’,errors=‘replace’)
    类似unquote(),不再赘述。

    五、urllib.parse.urlencode(query,doseq=False,safe=’’,encoding=None,errors=None,quote_via=quote_plus)
    该函数前面提到过,通常在使用HTTP进行POST请求传递的数据进行编码时使用。
    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명

    robots.txt文件


    robotparser模块很简单,仅定义了3个类(RobotFileParserRuleLineEntry)。从__all__属性来看也就RobotFileParser一个类(用于处理有关特定用户代理是否可以发布robots.txt文件的网站上提前网址内容)。

    robots文件类似一个协议文件,搜索引擎访问网站时查看的第一个文件,会告诉爬虫或者蜘蛛程序在服务器上可以查看什么文件。

    RobotFileParser类有一个url参数,常用以下方法:

    • set_url(): robots.txt 파일을 가리키는 URL을 설정하는 데 사용됩니다.
    • read(): robots.txt URL을 읽고 파서에 제공합니다.
    • parse(): robots.txt 파일을 구문 분석하는 데 사용됩니다.
    • can_fetch(): URL을 미리 가져올 수 있는지 여부를 결정하는 데 사용됩니다.
    • mtime(): robots.txt 파일이 마지막으로 크롤링된 시간을 반환합니다.
    • modified(): robots.txt 파일이 마지막으로 크롤링된 시간을 현재 시간으로 설정합니다.

    Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명

    많은 무료 학습 추천이 있으니 python tutorial(동영상)

    을 방문하세요.

    위 내용은 Python의 urllib 크롤러, 요청 모듈 및 구문 분석 모듈에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

  • 관련 라벨:
    원천:csdn.net
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿