《Python 爬虫零基础入门:小白也能看懂的超详细实战教程》

《Python 爬虫零基础入门:小白也能看懂的超详细实战教程》

爬虫就像一位自动化的 “信息采集员”,能帮你自动从网页中提取所需内容 —— 比如批量抓取文章、整理数据表格等,而 Python 凭借简洁的语法和强大的库支持,成为爬虫开发的首选语言。本文将从基础到实战,带零基础的你快速掌握 Python 爬虫核心技能。

一、爬虫核心工作流程

爬虫的工作逻辑很简单,三步就能搞定:

  1. 发送请求:向目标网页发起访问,就像浏览器输入网址打开页面,获取网页原始内容;
  2. 解析内容:从杂乱的网页代码中筛选出有用信息,比如标题、链接、数据等;
  3. 保存数据:将提取的信息存储到文件或数据库,方便后续查看和分析。

二、必备爬虫库安装与介绍

Python 爬虫的高效离不开专用库,核心必备两个基础库,进阶场景需额外补充工具:

1. 基础库(必装)

  • requests:负责发送网络请求,快速获取网页 HTML 代码;
  • BeautifulSoup4:专注解析 HTML 内容,轻松提取目标数据。

2. 安装命令

打开命令行,输入以下命令(清华源加速,下载更快):

pip install requests beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple

3. 进阶工具(按需安装)

  • Selenium:处理动态网页(数据由 JavaScript 生成),可模拟点击、滚动等浏览器操作,安装命令
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple

Scrapy:大规模爬虫框架,支持异步爬取,适合复杂项目,安装命令:

pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple

三、实战:编写第一个简单爬虫

以抓取百度首页的标题和所有链接为例,手把手教你落地实操:

1. 第一步:获取网页内容

用 requests 库向百度首页发送请求,获取 HTML 代码:

import requests # 目标网页地址 url = 'https://www.baidu.com' # 发送GET请求 response = requests.get(url) # 打印获取的HTML代码(可选,查看原始内容) print(response.text)

关键说明:requests.get(url) 是核心方法,response.text 会返回网页的纯文本 HTML 代码。

2. 第二步:解析网页,提取关键信息

用 BeautifulSoup 解析 HTML,先提取网页标题,再批量抓取所有链接:

from bs4 import BeautifulSoup # 解析HTML内容(指定解析器为html.parser) soup = BeautifulSoup(response.text, 'html.parser') # 1. 提取网页标题 title = soup.title.text print('网页标题:', title) # 输出:网页标题: 百度一下,你就知道 # 2. 提取所有链接(<a>标签的href属性) links = soup.find_all('a') # 获取所有<a>标签 # 循环打印每个链接的文本和地址 for link in links: link_text = link.text # 链接显示文本 link_url = link.get('href') # 链接实际地址 print(f'文本:{link_text} | 链接:{link_url}')

关键说明:soup.find_all('a') 可批量匹配指定标签,link.get('href') 用于提取标签的属性值。

四、爬虫分类与适用场景

根据网页类型和需求,选择不同的爬虫方案:

        1.静态网页爬虫:网页数据直接写在 HTML 中(如简单博客、静态官网),用 requests+BeautifulSoup 即可轻松爬取,适合入门练习;

        2.动态网页爬虫:数据通过 JavaScript 加载(如滚动加载的列表、登录后显示的内容),需用 Selenium 模拟浏览器运行,示例代码:

from selenium import webdriver # 启动Chrome浏览器(需提前安装Chrome驱动) driver = webdriver.Chrome() # 打开目标动态网页 driver.get('https://www.example.com') # 提取网页标题(此时已加载动态内容) print('动态网页标题:', driver.title) # 关闭浏览器 driver.quit()

      3.大规模爬虫:需爬取海量数据(如整站文章、行业数据),用 Scrapy 框架,支持自动去重、分布式爬取,效率更高。

五、常见反爬问题与解决方案

很多网站会限制爬虫访问,这 3 个技巧能帮你顺利绕过:

  1. 伪装请求头:模拟真实用户浏览器,避免被识别为爬虫:
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' } # 发送带请求头的请求 response = requests.get(url, headers=headers)

      2.设置访问延迟:避免频繁请求触发限制,用 time 库添加间隔:

import time # 每次请求后延迟2秒 time.sleep(2)

      3.使用代理 IP:更换 IP 地址,突破 IP 封锁限制:

proxies = { 'http': 'http://10.10.1.10:3128', 'https': 'https://10.10.1.10:1080' } # 用代理IP发送请求 response = requests.get(url, proxies=proxies)

六、数据保存:把爬取的信息存起来

提取数据后,常用两种保存方式,按需选择:

1. 保存到 CSV 文件(适合表格类数据)

import csv # 打开文件(newline=''避免空行,encoding='utf-8'支持中文) with open('百度链接.csv', 'w',, encoding='utf-8') as file: writer = csv.writer(file) # 写入表头 writer.writerow(['链接文本', '链接地址']) # 循环写入数据 for link in links: writer.writerow([link.text, link.get('href')])

2. 保存到数据库(适合长期存储、海量数据)

以轻量级 SQLite 为例(无需额外安装数据库):

import sqlite3 # 连接数据库(不存在则自动创建) conn = sqlite3.connect('爬虫数据.db') cursor = conn.cursor() # 创建数据表(若不存在) cursor.execute('CREATE TABLE IF NOT EXISTS links (text TEXT, url TEXT)') # 插入数据 for link in links: cursor.execute('INSERT INTO links (text, url) VALUES (?, ?)', (link.text, link.get('href'))) # 提交事务并关闭连接 conn.commit() conn.close() print('数据已保存到数据库')

七、核心知识点总结

  1. 基础流程:发送请求(requests)→ 解析内容(BeautifulSoup)→ 保存数据(CSV / 数据库);
  2. 工具选择:静态页用 requests+BeautifulSoup,动态页用 Selenium,大规模爬取用 Scrapy;
  3. 反爬技巧:伪装请求头、设置延迟、使用代理 IP;
  4. 关键原则:爬取数据时遵守网站 robots 协议,不频繁请求影响网站运行,不用于非法用途。

通过以上步骤,你已经掌握了 Python 爬虫的核心技能!可以试着爬取自己感兴趣的网站(如博客文章、电影榜单),多练习就能熟练运用。如果遇到具体网站的爬取问题,可针对性调整代码~

Read more

Python 数据科学秘籍(五)

原文:annas-archive.org/md5/a4f348a4e11e27ea41410c793e63daff 译者:飞龙 协议:CC BY-NC-SA 4.0 第九章:生长树 本章我们将涵盖以下食谱: * 从树到森林——随机森林 * 生长极度随机化的树 * 生长旋转森林 介绍 在本章中,我们将看到更多基于树的算法的袋装方法。由于它们对噪声的鲁棒性以及对各种问题的普适性,它们在数据科学社区中非常受欢迎。 大多数这些方法的名声在于它们相比其他方法能够在没有任何数据准备的情况下获得非常好的结果,而且它们可以作为黑盒工具交给软件工程师使用。 除了前文提到的过高的要求外,还有一些其他优点。 从设计上看,袋装法非常适合并行化。因此,这些方法可以轻松应用于集群环境中的大规模数据集。 决策树算法在树的每一层将输入数据划分为不同的区域。因此,它们执行了隐式的特征选择。特征选择是构建良好模型中的一个重要任务。通过提供隐式特征选择,决策树相较于其他技术处于有利位置。因此,带有决策树的袋装法具备这一优势。 决策树几乎不需要数据准备。例如,考虑属性的缩放。属性的缩放对决策

By Ne0inhk
Python 日志(logging)全解析

Python 日志(logging)全解析

文章目录 * 一、核心概念(四大组件) * 二、日志级别 * 三、基础使用 * 3.1 最简用法(默认配置) * 3.2 基本配置(logging.basicConfig) * 四、进阶配置(手动构建组件) * 4.1 手动配置流程 * 4.2 示例:多输出目标(控制台 + 文件) * 4.3 过滤器(Filter) * 五、日志轮转(解决日志文件过大问题) * 5.1 按大小轮转(RotatingFileHandler) * 5.2 按时间轮转(TimedRotatingFileHandler) * 六、异常日志记录 * 6.1 logging.exception

By Ne0inhk

重新创建python3.10环境,与先创建python3.8环境然后conda install python=3.10,二者不同

重新创建python3.10环境,与先创建python3.8环境然后conda install python=3.10,二者不同 今天安装mem0ai: pip install mem0ai 安装前没有查看要求的python版本,装了3.8,然后运行如下指令报错: from mem0 import MemoryClient 然后发现mem0ai要求python版本3.10以上,于是通过conda install python=3.10升级,出现了新的报错。 删除当前环境后重新创建python3.10环境,就可以正常运行了。 问了AI原来二者是有区别的: “在已有 Conda 环境中通过 conda install python=3.10 升级 Python 版本,会导致依赖包(尤其是含 C 扩展的包)与新 Python

By Ne0inhk
Python-flask的企业合同管理系统-Pycharm django

Python-flask的企业合同管理系统-Pycharm django

目录 * Python Flask 企业合同管理系统技术要点 * Django 企业合同管理系统技术对比 * Pycharm 开发优化技巧 * 技术选型建议 * 开发技术路线 * 源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! Python Flask 企业合同管理系统技术要点 Flask 框架核心模块 * 使用 Flask-SQLAlchemy 进行数据库模型设计,定义合同、客户、用户等数据表。 * 通过 Flask-WTF 实现表单验证,确保合同录入数据的合法性。 * 采用 Flask-Login 管理用户认证和权限控制,区分管理员与普通用户角色。 关键功能实现 * 合同增删改查(CRUD)功能,结合分页插件(Flask-Paginate)优化数据展示。 * 文件上传模块,支持 PDF/Word 格式合同附件存储,使用 Flask-Uploads 扩展。 * 合同状态跟踪(如待签署、

By Ne0inhk