小白学爬虫——爬取网页的基本框架

异常 说明
requests.ConnectionError 网络连接错误异常,如DNS查询失败、拒绝连接等
requests.HTTPError HTTP协议层面出现的错误异常
requests.URLRequired URL缺失异常
requests.TooManyRedirects 用户访问url进行重定向,而超过最大重定向次数,产生的异常(一些复杂的链接)
requests.ConnectTimeout 连接远程服务器超时异常
requests.Timeout 发出URL请求到获得内容整个过程的超时异常

专门与异常打交道的方法——r.raise_for_status()
读取r的状态,即 Response 对象的 status_code 状态,如果是200,返回的就是正确的,如果不是200,产生异常 requests.HTTPError

有了这么多基础知识,我们来看一下用requests库爬取网页的基本框架:

import requests 

def getHTMLText(url):

    try:
    
        r = requests.get(url , timeout=30)
        
        r.raise_for_status() #如果状态不是200,引发HTTPError异常
        
        r.encoding = r.apparent_encoding
        
        return r.text
        
    except:
    
        return "产生异常!"


if __name__ == "__main__":

    url = "http://www.baidu.com"
    
    print(getHTMLText(url))

以百度主页为例,我们来爬取一下网页的内容,得到的结果如下图所示。

小白学爬虫——爬取网页的基本框架_第1张图片
如果我们把 “http://” 删掉,就会出现异常中的字段也就是“产生异常!”

import requests

def getHTMLText(url):

    try:

        r = requests.get(url , timeout=30)

        r.raise_for_status() #如果状态不是200,引发HTTPError异常

        r.encoding = r.apparent_encoding

        return r.text

    except:

        return "产生异常!"

if __name__ == "__main__":

    url = "www.baidu.com"

    print(getHTMLText(url))	
	#产生异常!

你可能感兴趣的:(小白学爬虫——爬取网页的基本框架)