
目录
- 
- 
- Python爬虫初学者学习指南
- 
- 一、学习方向
- 二、Python爬虫知识点总结
- 三、具体知识点详解和实现步骤
- 
- [1. HTTP请求和HTML解析](#1. HTTP请求和HTML解析)
- [2. 正则表达式提取数据](#2. 正则表达式提取数据)
- [3. 动态内容爬取](#3. 动态内容爬取)
- [4. 数据存储](#4. 数据存储)
- [5. 反爬虫应对措施](#5. 反爬虫应对措施)
 
- 四、完整案例:爬取京东商品信息
- 
- [1. 导入库和设置基本信息](#1. 导入库和设置基本信息)
- [2. 获取网页内容](#2. 获取网页内容)
- [3. 解析数据](#3. 解析数据)
- [4. 保存数据到CSV](#4. 保存数据到CSV)
 
- [5. 结果展示](#5. 结果展示)
 
- 五、常见学习资源
 
 
- 
Python爬虫初学者学习指南
一、学习方向
- Python基础:掌握Python基础语法、文件处理、正则表达式(re模块)和数据处理(Pandas库)。
- HTTP与HTML解析基础:理解HTTP协议和HTML结构,学习请求库(Requests)和解析库(BeautifulSoup)。
- 动态页面处理:学习如何使用Selenium处理JavaScript动态加载内容。
- 反爬虫机制及应对方法:了解常见反爬虫机制,学习代理设置、请求头伪装、IP池等应对方法。
- 数据存储:学习如何将爬取的数据存储到CSV、JSON、数据库中,熟悉Pandas、SQLite等数据处理和存储工具。
- 实战案例:完成一些经典爬虫项目,如商品价格爬取、评论分析等,强化综合应用能力。
二、Python爬虫知识点总结
| 知识点 | 描述 | 常用方法或库 | 
|---|---|---|
| HTTP基础 | 了解HTTP请求和响应,GET、POST、状态码等 | requests.get()、requests.post() | 
| HTML结构解析 | 通过标签定位、CSS选择器、XPath解析HTML内容 | BeautifulSoup、lxml | 
| 正则表达式 | 使用正则表达式从文本中匹配特定模式的数据 | re库、re.findall() | 
| 动态内容爬取 | 处理JavaScript生成的动态数据,抓取动态加载的内容 | Selenium、Pyppeteer | 
| 代理与请求头伪装 | 防止被封禁,使用代理IP和伪装User-Agent | requests.Session()、代理池 | 
| Cookies处理 | 模拟登录和保持会话,获取需要登录的页面 | requests.Session(),headers | 
| 数据清洗与存储 | 清洗数据格式,保存到CSV、JSON或数据库中 | Pandas、json、sqlite3 | 
| 多线程与异步爬取 | 提高爬取速度,使用多线程或异步编程 | concurrent.futures、asyncio、aiohttp | 
| 反爬虫应对措施 | 随机请求头、延迟请求、使用代理IP等 | fake_useragent、time.sleep() | 
三、具体知识点详解和实现步骤
1. HTTP请求和HTML解析
通过 Requests 和 BeautifulSoup 库发送请求并解析内容。
            
            
              python
              
              
            
          
          import requests
from bs4 import BeautifulSoup
# 获取页面内容
url = "https://example.com"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
}
response = requests.get(url, headers=headers)
# 解析HTML内容
soup = BeautifulSoup(response.text, 'html.parser')
title = soup.find('title').text  # 提取页面标题
print("页面标题:", title)2. 正则表达式提取数据
使用正则表达式从HTML或文本中提取数据,适用于格式固定的数据。
            
            
              python
              
              
            
          
          import re
html = "<div><p>价格: ¥100</p></div>"
price = re.findall(r"¥(\d+)", html)
print("价格:", price[0])3. 动态内容爬取
处理JavaScript加载的内容,可以使用Selenium模拟浏览器行为。
            
            
              python
              
              
            
          
          from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
# 设置Selenium驱动
service = Service("chromedriver_path")  # 替换为Chromedriver路径
driver = webdriver.Chrome(service=service)
driver.get("https://example.com")
# 等待页面加载
time.sleep(3)
content = driver.find_element(By.CLASS_NAME, "target-class").text  # 获取内容
print("页面内容:", content)
# 关闭浏览器
driver.quit()4. 数据存储
爬取的数据可以存储为CSV、JSON文件,或保存到数据库中。
- 存储为CSV文件:
            
            
              python
              
              
            
          
          import pandas as pd
data = [{"Title": "Example", "Price": "100"}]
df = pd.DataFrame(data)
df.to_csv("output.csv", index=False)- 存储为JSON文件:
            
            
              python
              
              
            
          
          import json
data = [{"Title": "Example", "Price": "100"}]
with open("output.json", "w") as f:
    json.dump(data, f)- 存储到SQLite数据库:
            
            
              python
              
              
            
          
          import sqlite3
connection = sqlite3.connect('example.db')
cursor = connection.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS Products (Title TEXT, Price TEXT)''')
cursor.execute("INSERT INTO Products VALUES (?, ?)", ("Example", "100"))
connection.commit()
connection.close()5. 反爬虫应对措施
常见反爬虫措施及对应的应对方案。
| 反爬虫措施 | 应对方法 | 
|---|---|
| IP封禁 | 使用代理IP池,定期更换IP | 
| User-Agent检测 | 随机切换User-Agent,使用 fake_useragent库 | 
| 访问频率限制 | 设置请求延迟,使用 time.sleep()控制速度 | 
| 验证码 | 手动输入验证码或使用OCR识别工具 | 
| JavaScript检测 | 使用Selenium模拟浏览器,执行JavaScript代码 | 
四、完整案例:爬取京东商品信息
通过以下案例将知识点进行综合运用,爬取京东指定商品的价格、名称及评价数。
1. 导入库和设置基本信息
            
            
              python
              
              
            
          
          import requests
from bs4 import BeautifulSoup
import pandas as pd
import time
# 基础设置
url = "https://search.jd.com/Search?keyword=python书籍&enc=utf-8"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
}2. 获取网页内容
            
            
              python
              
              
            
          
          response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')3. 解析数据
            
            
              python
              
              
            
          
          products = []
for item in soup.select(".gl-item"):
    title = item.select_one(".p-name em").text.strip()
    price = item.select_one(".p-price i").text.strip()
    comment = item.select_one(".p-commit a").text.strip()
    products.append({"Title": title, "Price": price, "Comment": comment})4. 保存数据到CSV
            
            
              python
              
              
            
          
          df = pd.DataFrame(products)
df.to_csv("jd_products.csv", index=False, encoding='utf-8')
print("数据已保存到jd_products.csv")5. 结果展示
结果文件jd_products.csv将包含商品标题、价格和评论数等信息。
示例数据结构(CSV文件)
| Title | Price | Comment | 
|---|---|---|
| Python编程从入门到实践 | 55.8 | 5000+ | 
| 深入理解Python编程 | 75.2 | 3000+ |