Python爬虫入门教程的核心内容包括环境配置、HTTP请求库(如requests)、HTML解析库(如BeautifulSoup)以及数据存储方法,遵循"请求 解析 存储"的基本流程。
1.环境配置:
Python 安装: 确保安装了合适版本的 Python (通常是 Python 3.x)。
包管理工具: 使用 pip 安装所需的第三方库。
虚拟环境 (推荐): 使用 venv 或 virtualenv 创建隔离的项目环境,避免包冲突。
安装核心库: pip install requests beautifulsoup4
2.HTTP 请求库 (如 requests):
作用: 模拟浏览器向目标网站发送 HTTP 请求 (主要是 GET,有时是 POST),获取服务器返回的响应内容(通常是 HTML、JSON、XML 或二进制数据如图片)。
requests 库核心功能:
requests.get(url, headers=headers, params=params, ...):发送 GET 请求。
requests.post(url, data=data, json=json, headers=headers, ...):发送 POST 请求。
response.status_code:获取 HTTP 响应状态码 (200 表示成功)。
response.text:获取响应内容(文本形式,如 HTML)。
response.content:获取响应内容(二进制形式,如图片)。
response.json():如果响应内容是 JSON,将其解析为 Python 字典/列表。
关键点: 设置请求头 (headers),特别是 User-Agent,让请求看起来更像浏览器行为,避免被简单拦截。
3.HTML 解析库 (如 BeautifulSoup):
作用: 将从 requests 获取的 HTML 文本进行解析,提取出我们需要的数据(标题、正文、链接、价格等)。
BeautifulSoup 库核心功能:
创建对象:soup = BeautifulSoup(html_text, 'html.parser') (或 'lxml'/'html5lib' 解析器)。
查找元素:
soup.find(tag_name, attrs={...}):查找符合条件的第一个元素。
soup.find_all(tag_name, attrs={...}):查找所有符合条件的元素,返回列表。
soup.select(css_selector):使用 CSS 选择器查找元素,非常强大灵活。
提取数据:
element.text / element.get_text():获取元素的文本内容。
element['attribute_name']:获取元素的属性值(如 href, src)。
element.parent / element.children / element.next_sibling 等:在 DOM 树中导航。
4.数据存储方法:
作用: 将解析提取到的结构化数据保存下来,供后续使用或分析。
常见方式:
文件:
文本文件 (.txt): 简单存储,但结构化差。with open('data.txt', 'w') as f: f.write(...)
CSV 文件 (.csv): 存储表格数据(行和列)。使用内置 csv 模块或 pandas。非常适合结构化数据。
JSON 文件 (.json): 存储结构化、嵌套的数据。使用内置 json 模块。json.dump(data, file)
数据库 (入门可选,但很重要):
SQLite: 轻量级文件数据库,Python 内置支持 (sqlite3 模块)。适合中小型项目。
MySQL / PostgreSQL: 更强大的关系型数据库,需要额外安装驱动和运行数据库服务。
MongoDB: 文档型数据库,适合存储 JSON 类数据,灵活性高。
简单的示例代码框架
import requests
from bs4 import BeautifulSoup
import csv
# 1. 请求 (Request)
url = "https://example.com/products"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...'} # 模拟浏览器
try:
response = requests.get(url, headers=headers)
response.raise_for_status() # 检查请求是否成功
html_content = response.text
except requests.exceptions.RequestException as e:
print(f"请求出错: {e}")
exit(1)
# 2. 解析 (Parse)
soup = BeautifulSoup(html_content, 'html.parser') # 使用内置的 html.parser
# 假设产品信息在 class='product' 的 div 里
products = soup.find_all('div', class_='product')
data_list = []
for product in products:
# 提取具体数据 (示例)
name = product.find('h2').text.strip()
price = product.find('span', class_='price').text.strip()
link = product.find('a')['href'] # 获取链接属性
# 将数据组织成字典
product_data = {'name': name, 'price': price, 'link': link}
data_list.append(product_data)
# 3. 存储 (Store) - 存为 CSV
filename = 'products.csv'
with open(filename, 'w', newline='', encoding='utf-8') as csvfile:
fieldnames = ['name', 'price', 'link']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(data_list)
print(f"数据已成功爬取并保存到 {filename}")
掌握这四点及其流程,就能实现基础的网页信息抓取任务。后续进阶则会涉及更复杂的反爬策略(代理IP、验证码识别、模拟登录、JavaScript渲染处理等)、异步爬虫、爬虫框架(Scrapy)、数据清洗和分析等。