python_获取网页的内容和状态

本文演示了如何使用Python的httplib库发起HTTP GET请求并解析响应状态和内容。
import httplib
conn = httplib.HTTPConnection("www.baidu.com");
conn.request("GET", "/index.html");
r1 = conn.getresponse();
print r1.status, r1.reason;
print("\n"+r1.read());
conn.close();
<think>嗯,用户想了解如何用Python获取网页内容。我应该从基础开始讲起,确保他能理解整个过程。首先,得提到常用的库,比如requestsurllib。这两个库比较常见,requests更简洁,适合新手。 然后,可能需要分步骤说明。比如,第一步是发送HTTP请求,用requests.get()方法。然后检查响应状态码,200表示成功。接着获取网页内容,可以用response.text或者response.content。这部分要解释清楚两者的区别,text是字符串,content是字节数据。 可能还需要提到异常处理,比如网络问题或者请求超时,这时候用try-except块来捕获异常,避免程序崩溃。另外,有些网站会有反爬虫机制,可能需要设置User-Agent头来模拟浏览器访问,或者使用requests.Session来保持会话。 还有,解析网页内容的话,可以提到BeautifulSoup或者lxml库,但用户的问题主要是获取内容,可能解析是下一步。不过如果用户感兴趣,也可以简单提一下,但不要深入。 需要注意的是,Python 3中urlliburllib2已经合并成了urllib.request,所以如果用户用urllib的话,可能需要导入正确的模块。但通常推荐requests,因为更简单。 可能用户是刚开始学,所以例子要简单明了。比如一个基本的requests例子,发送请求,检查状态码,打印内容。然后再举一个urllib的例子作为对比,说明两者的不同。 还要提醒用户注意法律网站的使用条款,不要频繁请求,防止被封IP。可能需要提到robots.txt文件,尊重网站的爬虫政策。 总结一下,回答的结构应该是:介绍库,基本步骤,代码示例,异常处理,注意事项。这样用户能一步步跟着做,同时了解潜在的问题解决方法。</think>在 Python获取网页内容主要通过发送 HTTP 请求实现,以下是常用的两种方法及详细步骤说明: --- ### **一、使用 requests 库(推荐)** ```python import requests try: # 设置请求头模拟浏览器访问(可选) headers = {'User-Agent': 'Mozilla/5.0'} # 发送 GET 请求 response = requests.get('https://www.example.com', headers=headers) # 检查响应状态码(200 表示成功) if response.status_code == 200: # 获取文本内容(自动处理编码) html_content = response.text print(html_content) else: print(f"请求失败,状态码:{response.status_code}") except requests.exceptions.RequestException as e: print(f"请求异常:{e}") ``` #### **关键点说明** 1. **安装库**:需通过 `pip install requests` 安装 2. **自动编码**:`response.text` 会自动根据网页编码解析内容(如 UTF-8) 3. **二进制内容**:如需原始字节数据,使用 `response.content` 4. **超时设置**:可添加 `timeout=5` 参数防止长时间等待 --- ### **二、使用 urllib 库(Python 内置)** ```python from urllib.request import urlopen from urllib.error import URLError try: # 发送请求并获取响应 response = urlopen('https://www.example.com', timeout=5) # 读取内容并解码(需手动指定编码) html_content = response.read().decode('utf-8') print(html_content) except URLError as e: print(f"请求异常:{e.reason}") ``` #### **关键点说明** 1. **手动解码**:需通过 `decode()` 方法将字节数据转为字符串 2. **编码问题**:部分网页可能使用其他编码(如 GBK),需根据实际情况调整 --- ### **三、注意事项** 1. **遵守规则**:检查目标网站的 `robots.txt` 文件(如 `https://example.com/robots.txt`) 2. **频率控制**:避免高频请求,否则可能被封禁 IP 3. **动态内容**:若网页通过 JavaScript 加载数据,需使用 Selenium 或 Playwright 等工具 --- ### **四、扩展场景** - **POST 请求**:使用 `requests.post(url, data={...})` 提交表单 - **处理 JSON**:若返回 JSON 数据,可直接用 `response.json()` 解析 - **下载文件**:通过 `with open('file.html', 'wb') as f: f.write(response.content)` 保存网页 如需进一步处理网页内容(如提取数据),可结合 `BeautifulSoup` 或 `lxml` 库解析 HTML。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值