一、爬虫的基本原理
- HTTP 请求与响应
- 爬虫通过
HTTP协议与目标网站服务器通信。 - 发送请求时可指定
URL、请求方法(GET或POST)、请求头等。 - 服务器根据请求返回 HTML 页面、JSON 数据或其他格式的响应。
- 爬虫通过
- HTML 解析
HTML 是网页的主要结构。爬虫通过解析 HTML 提取有用信息,如标题、图片、表格等。 - 数据存储
抓取的数据可存储到文件(如 CSV、JSON)、数据库(如 MySQL、MongoDB)等介质中,便于后续分析。 - 反爬机制
- User-Agent 检测:服务器检查请求来源是否合法。
- 频率限制:高频访问可能触发封禁。
- 验证码验证:部分网站通过验证码阻止自动化行为。
- robots.txt 协议
网站通过robots.txt指定哪些页面可以被爬取,爬虫需遵守此协议。
二、爬虫实现步骤
1. 准备工作
安装必要的库:
pip install requests beautifulsoup4 lxml pandas
2. 详细代码实现
(1)发送 HTTP 请求 通过 requests 库获取网页内容。
import requests # 定义目标 URL url = "https://example.com" # 设置请求头,伪装为浏览器访问 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36" } # 发送请求 response = requests.get(url, headers=headers) # 检查状态码 if response.status_code == 200: print("请求成功!") print(response.text[:500]) # 打印部分网页内容 else: print(f"请求失败,状态码:{response.status_code}")
(2)解析 HTML 数据 使用 BeautifulSoup 提取 HTML 中的内容。
from bs4 import BeautifulSoup # 使用 BeautifulSoup 解析 HTML soup = BeautifulSoup(response.text, "lxml") # 提取网页标题 title = soup.title.string print(f"网页标题:{title}") # 提取所有超链接 links = [] for a_tag in soup.find_all("a", href=True): links.append(a_tag["href"]) print("提取到的链接:") print(" ".join(links))
(3)存储数据 将数据保存为 CSV 文件。
import pandas as pd # 构造数据字典 data = {"Links": links} # 转换为 DataFrame df = pd.DataFrame(data) # 保存为 CSV df.to_csv("links.csv", index=False, encoding="utf-8-sig") print("数据已保存到 links.csv")

