Python IDLE利用requests库爬取网页并检测HTTP状态码

需积分: 9 0 下载量 164 浏览量 更新于2024-09-02 收藏 611B TXT 举报
在本篇Python学习笔记中,我们将探讨如何使用Python的requests库进行网页爬取以及如何检测HTTP响应的状态码。首先,让我们熟悉IDLE环境中的基本操作,通过导入requests模块来发送GET请求到指定的URL(例如,百度首页): ```python import requests # 发送GET请求 r = requests.get("http://www.baidu.com") ``` 在这个代码片段中,`requests.get()`函数接收一个URL作为参数,然后返回一个Response对象。Response对象包含了服务器对请求的响应,包括状态码、编码和实际的HTML文本。状态码是HTTP响应的核心部分,它用三位数字表示请求的结果,200通常意味着成功,而其他值如404表示未找到,500表示服务器错误等。 检测请求状态码的方法是通过访问`r.status_code`属性。例如: ```python r.status_code # 输出:200 (如果成功,显示具体状态码) ``` 如果请求成功(状态码为200),我们还需要确保获取正确的字符编码,以便正确解析返回的文本。这可以通过设置`r.encoding`为自动检测的编码(`r.apparent_encoding`),然后读取`r.text`内容: ```python r.encoding = r.apparent_encoding html_text = r.text ``` 为了实现一个更通用的爬虫函数,我们可以封装这些步骤,创建一个名为`getHTMLText`的函数,该函数接受URL作为输入,并处理可能出现的异常: ```python def getHTMLText(url): try: r = requests.get(url, timeout=30) # 设置超时时间 r.raise_for_status() # 如果状态码非200,抛出异常 r.encoding = r.apparent_encoding return r.text except requests.exceptions.RequestException as e: return "产生异常: " + str(e) # 在主程序中调用 if __name__ == "__main__": url = "http://www.baidu.com" print(getHTMLText(url)) ``` 这个函数在尝试获取HTML文本时捕获了可能的网络请求异常,并在发生错误时返回预定义的错误消息。通过这种方式,初学者可以更好地理解Python爬虫的基本结构,包括状态码检查、异常处理和编码管理。 本篇Python学习笔记的重点在于介绍如何使用requests库进行网页爬取,通过检查状态码判断请求是否成功,以及如何编写一个健壮的函数来抓取并处理HTML文本。这对于理解Web数据抓取和处理的基础至关重要。