一、基础工具准备
安装必要库
需安装`requests`和`BeautifulSoup`库,可通过以下命令安装:
```bash
pip install requests beautifulsoup4
```
发送HTTP请求
使用`requests`库发送GET请求获取网页内容:
```python
import requests
url = 'https://www.example.com' 替换目标网页地址
response = requests.get(url)
if response.status_code == 200:
html_content = response.text
else:
print(f"请求失败,状态码:{response.status_code}")
```
解析HTML内容
使用`BeautifulSoup`解析HTML,提取所需数据:
```python
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_content, 'html.parser')
示例:提取所有段落文本
paragraphs = soup.find_all('p')
for p in paragraphs:
print(p.get_text())
```
二、进阶技巧与注意事项
处理动态内容
对于通过AJAX动态加载的网页,可使用`requests`结合`Selenium`模拟浏览器行为,或使用`BeautifulSoup`解析`JavaScript`生成的`DOM`。
模拟浏览器请求
添加`User-Agent`头伪装浏览器,避免被封禁:
```python
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0;Win64;..." 完整浏览器标识
}
response = requests.get(url, headers=headers)
```
处理反爬机制
设置请求间隔时间:`time.sleep()`
使用代理IP:`requests.proxies`
避免频繁请求同一IP
数据存储
将提取的数据保存到文件(如CSV)或数据库中:
```python
import csv
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['Title', 'Link']) 写入表头
for link in links:
writer.writerow([link.text, link['href']])
```
异常处理
添加错误处理机制,应对网络问题或数据格式异常:
```python
try:
response = requests.get(url, headers=headers)
response.raise_for_status() 检查请求是否成功
except requests.exceptions.RequestException as e:
print(f"请求异常:{e}")
```
三、合法性与道德规范
遵守robots.txt协议
访问目标网站前,检查`robots.txt`文件,尊重网站爬取规则。
控制爬取频率
避免对目标服务器造成过大压力,建议每分钟不超过1-2次请求。
数据隐私与版权
仅爬取公开数据,避免侵犯知识产权或隐私信息。
通过以上步骤和技巧,可高效地使用Python爬取网页数据。若需处理复杂场景(如登录验证、大规模数据抓取),可进一步学习`Selenium`、`Scrapy`等高级工具。