一篇最全Python 爬虫超详细讲解(零基础入门,适合小白)

一篇最全Python 爬虫超详细讲解(零基础入门,适合小白)

大家好!我是 Grok,由 xAI 构建。今天我们来聊聊 Python 爬虫。作为一个零基础教程,我会从最简单的地方开始,一步步带你入门。爬虫(Web Scraping)就是用程序自动从网站上抓取数据的工具,比如下载图片、收集新闻、分析价格等。为什么学?因为它超级实用,能帮你自动化很多重复工作,比如监控电商价格或收集研究数据。

注意:爬虫要遵守法律和道德!不要爬取受保护的数据(如个人信息),尊重 robots.txt 协议,避免高频请求导致网站崩溃。否则可能被封 IP 或面临法律风险。

这个教程基于 2026 年最新实践(Python 3.12+),结合了网络上热门资源(如 Bilibili 尚硅谷教程、知乎文章等)。我们会从基础到进阶,包含代码示例。准备好你的电脑,我们开始吧!

第一部分:准备工作(零基础起步)
  1. 安装 Python
    • 下载官网最新版(https://www.python.org/downloads/),推荐 Python 3.12 或更高。Windows/Mac/Linux 都支持
    • 安装时勾选“Add Python to PATH”,便于命令行使用。
    • 验证:打开命令提示符(Win: cmd;Mac: Terminal),输入 python --version,看到版本号就 OK。
  2. 安装代码编辑器
    • 推荐 VS Code(免费,轻量):下载 https://code.visualstudio.com/,安装 Python 扩展。
    • 或者 PyCharm Community Edition(专业 IDE):https://www.jetbrains.com/pycharm/download/。
  3. 安装爬虫常用库(用 pip,Python 自带包管理器):
    • 解释:
      • requests:发送 HTTP 请求,模拟浏览器访问网站。
      • beautifulsoup4(简称 bs4):解析 HTML,提取数据。
      • lxml:bs4 的高效解析器。
      • selenium:处理动态页面(如 JavaScript 加载)。
      • scrapy:专业爬虫框架。
  4. 测试环境
    • 运行:命令行 python test.py,看到输出就成功。

新建一个 .py 文件(如 test.py),写:

print("Hello, 爬虫世界!")

打开命令行,输入:

pip install requests beautifulsoup4 lxml selenium scrapy 
第二部分:爬虫基础知识

爬虫流程(核心三步):

  1. 发送请求:用 requests 获取网页内容。
  2. 解析数据:用 bs4 或 xpath 提取有用信息。
  3. 保存数据:存到文件、数据库或 Excel。

HTTP 基础(小白必知):

  • GET:获取数据(最常见)。
  • POST:提交数据(如登录)。
  • Headers:模拟浏览器(如 User-Agent)。
  • Cookies:保持登录状态。

反爬虫常见问题

  • 网站检测机器人:用假 User-Agent 或代理 IP。
  • 动态加载:用 Selenium 模拟浏览器。
第三部分:简单爬虫实战(入门示例)

我们爬取一个简单网站:百度首页的标题和链接。作为小白第一爬,超级简单!

    • 运行:保存为 baidu_crawler.py,命令行 python baidu_crawler.py
    • 输出:页面标题和链接列表。
  1. 解释代码
    • requests.get():获取网页源代码。
    • BeautifulSoup:像“汤”一样搅拌 HTML,轻松找标签(如 find_all("a") 找所有超链接)。
    • 如果网站用 JavaScript 加载,用 Selenium 替换 requests(见进阶)。
  2. 小练习:改成爬取豆瓣电影 Top 250 的电影名(URL: https://yingjuxia.com/archives/8406)。提示:找 class="title" 的标签。

代码示例(用 requests + bs4):

import requests from bs4 import BeautifulSoup # 第一步:发送请求 url ="https://www.baidu.com"# 目标网址 headers ={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}# 模拟浏览器,避开简单反爬 response = requests.get(url, headers=headers)# 检查响应if response.status_code ==200:print("请求成功!")else:print("请求失败,状态码:", response.status_code) exit()# 退出程序# 第二步:解析 HTML soup = BeautifulSoup(response.text,"lxml")# 用 lxml 解析器# 提取标题 title = soup.title.string print("页面标题:", title)# 提取所有链接 links = soup.find_all("a")# 找所有 <a> 标签for link in links: href = link.get("href")# 获取 href 属性 text = link.string # 获取文本if text:# 过滤空文本print(f"链接文本:{text},URL:{href}")# 第三步:保存数据(可选,存到文件)withopen("baidu_links.txt","w", encoding="utf-8")as f:for link in links:if link.string: f.write(f"{link.string}: {link.get('href')}\n")print("数据已保存到 baidu_links.txt")
第四部分:进阶技巧(从小白到高手)
  1. 处理动态页面(JavaScript 渲染)
    • 用 Selenium 模拟浏览器。
    • 安装 ChromeDriver(匹配你的 Chrome 版本):https://googlechromelabs.github.io/chrome-for-testing/。
    • 优势:能处理登录、点击等交互。
  2. XPath 解析(更精确提取):
    • 用 lxml 的 etree。
    • XPath 语法://tag 找所有 tag;@attr 找属性。
  3. 反爬虫应对
    • 延迟请求:import time; time.sleep(2) 每请求睡 2 秒。
    • 验证码:用 OCR 库如 pytesseract 识别简单验证码。
  4. 数据存储
    • 数据库:SQLite 或 MySQL(用 sqlite3 或 pymysql)。
  5. Scrapy 框架(专业级)
    • 安装后,创建项目:scrapy startproject myspider
    • 运行:scrapy crawl example -o output.json
    • 优势:内置调度、管道、去重,适合大项目。

示例 Spider:

import scrapy classMySpider(scrapy.Spider): name ="example" start_urls =["https://www.example.com"]defparse(self, response): titles = response.xpath('//h1/text()').getall()yield{"title": titles}

CSV:用 pandas。

import pandas as pd data =[{"name":"Alice","age":25}] df = pd.DataFrame(data) df.to_csv("data.csv", index=False)

代理 IP:用免费/付费代理池,避免 IP 被封。

proxies ={"http":"http://your_proxy:port"} response = requests.get(url, proxies=proxies)

User-Agent 轮换:用 fake_useragent 库随机 UA。

pip install fake_useragent from fake_useragent import UserAgent ua = UserAgent() headers ={"User-Agent": ua.random}

示例:

from lxml import etree html = etree.HTML(response.text)# 解析 titles = html.xpath('//h1/text()')# XPath 表达式:所有 h1 标签的文本print(titles)

示例代码:

from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By # 配置 ChromeDriver 路径 service = Service("path/to/chromedriver.exe")# 替换成你的路径 driver = webdriver.Chrome(service=service) url ="https://www.example.com"# 动态网站 driver.get(url)# 找元素(用 XPath 或 CSS) elements = driver.find_elements(By.CSS_SELECTOR,"div.classname")for elem in elements:print(elem.text) driver.quit()# 关闭浏览器
第五部分:常见问题与调试
  1. 请求失败(403/429):加 headers 和 proxies;检查 URL。
  2. 解析出错:打印 response.text 看源代码;用浏览器开发者工具(F12)找标签。
  3. 中文乱码:加 encoding="utf-8"
  4. 网站变化:爬虫易失效,定期维护。
  5. 法律风险:只爬公开数据;参考 robots.txt(URL/robots.txt)。
第六部分:资源推荐(继续学习)

恭喜!你已入门 Python 爬虫!多练多调试,很快就能爬复杂网站。遇到问题,欢迎问我~ 🚀 如果想加深某个部分(如 Scrapy 实战),告诉我!

Read more

从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战

从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * 从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战 🏠💡 * 为什么选择RISC-V?🤔 * 系统整体架构概览 🧩 * 第一步:硬件选型与电路搭建 🔌 * 主控芯片选择 * 外设连接 * 第二步:开发环境搭建 🛠️ * 安装步骤(以Ubuntu为例) * 第三步:裸机驱动开发(Bare Metal)⚡ * 示例1:DHT11温湿度读取(Bit-banging) * 示例2:BH1750光照传感器(I2C) * 第四步:引入FreeRTOS实现多任务调度 🔄 * 第五步:Wi-Fi连接与MQTT通信 ☁️📡 * 连接Wi-Fi * MQTT客户端(使用esp-mqtt库) * 第六步:BLE本地控制(无需Wi-Fi)📱

By Ne0inhk
机器人远程监控与OTA升级

机器人远程监控与OTA升级

7.4.1 远程监控的理论框架 远程监控是物联网和工业4.0时代的核心技术,其理论任务是通过网络通信手段,实现对分布式机器人设备的实时状态感知、故障预警和远程干预 。对于机器人系统而言,远程监控不仅是数据可视化的问题,更是一个涉及数据采集、传输、处理、分析和决策的闭环系统工程。 远程监控系统的三层理论架构: 感知层解决“数据从哪里来”的问题。包括机器人本体上的各类传感器(温度、振动、电流、位置)、控制器状态(CPU负载、内存使用、存储寿命)以及运行日志的采集 。感知层的理论基础是传感器技术和信号处理,其核心挑战是在不影响机器人实时控制的前提下,高效、可靠地获取状态数据。 传输层解决“数据怎么传”的问题。根据应用场景的不同,可采用Wi-Fi(室内短距)、4G/5G(广域移动)、工业以太网(固定工位)等不同通信方式 。传输层的理论基础是网络通信协议栈,其核心挑战是保证数据在复杂工业环境下的实时性、可靠性和安全性。 应用层解决“数据怎么用”

By Ne0inhk

neo4j desktop2 安装与使用

1. Neo4j Desktop 2 简介 1.1 Neo4j Desktop 2 的核心功能与优势 Neo4j Desktop 2 是 Neo4j 官方推出的图形化数据库管理工具,专为开发者和数据科学家设计。 其主要优势包括: 一体化开发环境:集成了数据库实例管理、查询编辑、数据可视化和扩展管理 本地开发友好:支持在本地机器上快速创建和测试图数据库实例 多版本管理:可同时管理多个 Neo4j 数据库版本 插件生态系统:内置插件市场,轻松安装常用扩展  项目管理:以项目为单位组织数据库、查询和配置   1.2 适用场景 图数据库开发:为应用程序开发提供本地图数据库环境 本地测试:在部署到生产环境前进行数据模型测试和查询验证 项目管理:管理多个图数据库项目,保持环境隔离 教育与学习:学习 Cypher 查询语言和图数据库概念 2.

By Ne0inhk
手把手教你配置飞书 OpenClaw 机器人,打造企业级 AI 智能助手

手把手教你配置飞书 OpenClaw 机器人,打造企业级 AI 智能助手

目标:在飞书(Feishu/Lark)中添加 OpenClaw 机器人,实现 7×24 小时 AI 智能对话与自动化办公。 OpenClaw GitHub | feishu-openclaw 桥接项目 想让你的机器人具备语音交互能力?试试 Seeed Studio 的 ReSpeaker 系列吧! 我会后续出reSpeaker XVF3800与Openclaw联动实现语音输入的教程,完全开放源码。 reSpeaker XVF3800 是一款基于 XMOS XVF3800 芯片的专业级 4 麦克风圆形阵列麦克风,即使在嘈杂的环境中也能清晰地拾取目标语音。它具备双模式、360° 远场语音拾取(最远 5 米)、自动回声消除 (AEC)、自动增益控制 (AGC)、声源定位 (DoA)、去混响、波束成形和噪声抑制等功能。

By Ne0inhk