Python爬虫教程:urllib高级用法
发布时间: 2024-02-27 02:50:24 阅读量: 44 订阅数: 32
# 1. 理解urllib库的基本用法
在本章中,我们将介绍urllib库的基本概念和基本用法。我们将详细讨论urllib.request模块的功能,以及urllib.error模块用于处理异常的方法。
### 1.1 urllib库简介
urllib是Python内置的HTTP请求库,包含四个模块:urllib.request、urllib.error、urllib.parse、urllib.robotparser。它可以用来发送GET和POST请求,处理服务器响应数据,处理异常,以及对URL进行解析和拼接等操作。
### 1.2 urllib.request模块详解
urllib.request模块是用于发送HTTP/HTTPS请求的模块,它包含了多个方法用于发起各种类型的请求,如urlopen()方法可以用于发送GET请求,urlencode()方法可以用于发送POST请求。此外,它还包含了丰富的参数配置和请求头设置等功能。
```python
import urllib.request
# 发起一个GET请求
response = urllib.request.urlopen('http://www.example.com')
html = response.read().decode('utf-8')
print(html)
```
### 1.3 urllib.error模块的异常处理
urllib.error模块主要用于处理urllib库的异常,例如处理HTTPError、URLError等异常情况。我们可以利用try...except语句和HTTPError的code和reason属性来捕获和处理异常情况。
```python
import urllib.error
try:
response = urllib.request.urlopen('http://www.example.com/not_exist')
except urllib.error.HTTPError as e:
print('HTTPError: {}'.format(e.code))
except urllib.error.URLError as e:
print('URLError: {}'.format(e.reason))
```
以上是第一章的内容,接下来我们将继续讨论urllib库的高级用法。
# 2. 使用urllib爬取静态网页数据
在这一章中,我们将学习如何使用urllib库来爬取静态网页数据。静态网页是指在服务器端已经呈现完成的网页,一般通过HTTP请求直接获取即可。我们将探讨如何发起GET请求和POST请求,以及如何处理HTTP响应数据。
### 2.1 发起GET请求
首先,我们来看一个简单的例子,如何使用urllib库发起GET请求获取网页数据:
```python
import urllib.request
url = 'http://www.example.com'
response = urllib.request.urlopen(url)
data = response.read()
print(data)
```
**代码说明:**
- 使用`urllib.request.urlopen(url)`打开指定URL的页面。
- 使用`response.read()`读取页面数据。
- 打印数据即可查看获取的页面内容。
**代码结果说明:**
运行以上代码后,会输出指定网页的HTML内容。
### 2.2 发起POST请求
接下来,我们看一下如何使用urllib库发起POST请求:
```python
import urllib.request
import urllib.parse
url = 'http://www.example.com/login'
data = urllib.parse.urlencode({'username': 'user', 'password': 'pass'}).encode()
req = urllib.request.Request(url, data=data, method='POST')
response = urllib.request.urlopen(req)
result = response.read()
print(result)
```
**代码说明:**
- 使用`urllib.parse.urlencode()`对POST参数进行编码。
- 创建`urllib.request.Request`对象,并指定URL、数据和请求方法。
- 使用`urllib.request.urlopen()`发送POST请求。
- 打印获取到的结果。
**代码结果说明:**
通过以上代码,我们可以发送POST请求模拟用户登录,并获取登录后的页面数据。
### 2.3 处理HTTP响应数据
在处理HTTP响应数据时,常见的需求包括获取状态码、响应头信息等。下面是一个简单的示例:
```python
import urllib.request
url = 'http://www.example.com'
response = urllib.request.urlopen(url)
print(response.getcode()) # 获取状态码
print(response.info()) # 获取响应头信息
```
**代码说明:**
- 使用`response.getcode()`获取HTTP状态码。
- 使用`response.info()`获取HTTP头部信息。
**代码结果说明:**
运行以上代码,可以查看所请求页面的状态码和响应头信息。
这就是使用urllib库爬取静态网页数据的基本方法和技巧。在接下来的章节中,我们将继续探讨更多高级应用和技巧。
# 3. 使用urllib爬取动态网页数据
在这一章中,我们将介绍如何使用urllib库来爬取动态网页数据,包括抓取AJAX请求和模拟登录。
#### 3.1 使用urlli
0
0