爬虫学习笔记第二天(urllib库)

1.urllib库(python自带的内置HTTP请求库):request模块(模拟发送请求);error(异常处理模块);parse(工具模块,处理URL);robotparser(识别网站的robots.txt文件)。

  1.1https://docs.python.org/3/library/urllib.request.html官方手册。request模块:urlopen()方法,网站抓取,返回一个HTTPResponse类型的对象,该对象有read(),readinto(),getheader(name),getheaders(),fileno()等方法和msg,versuin,status,reason,debuglevel,closed等属性。,urlopen的API:urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None.capath=None,cadefault=False,context=None)>>>>>>Request()类,返回一个request类型的对象,class urllib.request.Request(url,data=None,headers={},origine_req_host=None,unverifiable=False,method=None)>>>>>>Handler类,各种处理器,有专门处理登陆验证的,有处理cookies的,有处理代理设置的,其父类是提供了default_open(),protocol_request()等方法的BaseHandler,继承BaseHandler类的各种handler子类有HTTPDefaultErrorHandler(处理HTTP相应错误),HTTPRedirectHandler(用于重定向),HTTPCookieProcessor(用于处理cookies),ProxyHandler(用于设置代理),HTTPPasswordMgrWithDefaultRealm(用于管理密码),HTTPBasicAuthHandler(用于认证管理)>>>>>>OpenerDirector类,有open()方法,利用Handler来构建Opener,buile_opener。

  1.2error模块:URLError类是此模块的基类,由request模块生成的异常都可以此类处理>>>>>>HTTPError是URLError的子类,专门用来处理HTTP请求错误,有三个属性code(返回HTTP状态码),reason(返回错误原因),headers(返回请求头)

  1.3parse模块(定义了处理URL的标准接口,例如实现URL各部分的抽取,合并以及链接转换):urlparse(urlstring,scheme='',allow_fragments=True)方法,实现URL的识别和分段,(scheme://netloc/path;params?query#fragment)://前面的是scheme,代表协议,第一个/符号前面的是netloc,即域名,后面是path,即访问路径,分号后面的是params,代表参数,问号后面是查询条件query,一般用做GET类型的URL,井号后面是锚点,用于直接定位页面内部的下拉位置。>>>>>>urlunparse(6个可迭代的列表或者元组对象),构造URL。>>>>>>urlsplit()方法类似于urlparse(),只是不单独解析params这一部分,将其合并到path中。>>>>>>urlunsplit(5个可迭代的列表或者元组对象),构造URL。>>>>>>urljoin(base_url,新链接)方法,如果scheme,netloc,path这三项在新的链接里不存在,就用base_url补充,存在则就用新链接的。>>>>>>urlencode(字典),将字典参数序列化为GET请求参数parse_qs(),反序列化,将GET请求转回字典.>>>>>>parse_qsl()反序列化,将参数转化成元组组成的列表>>>>>>quote(中文),将中文字符转化为URL编码>>>>>>unquote(),URL解码

  1.4robotparser模块:RobotFileParser类,urllib.robotparser.RobotFileParser(url=''),此类常用方法set_url(rrobots.txt文件链接),read()读取robots.txt文件并进行分析,parse()解析robots.txt文件,can_fetch(user-agent,URL),返回布尔型,确定该引擎是否可以抓取这个URL,mtime(),返回上次抓取和分析robot.txt的时间,modified(),将当前时间设置为上次抓取和分析的robots.txt的时间

2.isinstance()判断一个对象是否是已知类型,类似于type()。

  区别:type() 不会认为子类是一种父类类型,不考虑继承关系。isinstance() 会认为子类是一种父类类型,考虑继承关系。

  语法:isinstance(object, classinfo)>>>>>>object -- 实例对象。classinfo -- 可以是直接或间接类名、基本类型或者由它们组成的元组。

3.socket 模块是网络连接端点。例如当你的Web浏览器请求上某主页时,你的Web浏览器创建一个socket并命令它去连接此Web服务器主机,Web服务器也对来自的请求在一个socket上进行监听。两端使用各自的socket来发送和 接收信息。socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。

猜你喜欢

转载自www.cnblogs.com/Turing-dz/p/11401910.html