两个实用且热门的 Python 爬虫案例,结合动态/静态网页抓取和反爬策略,附带详细代码和实现说明
在这个瞬息万变的世界里,保持一颗探索的心,永远怀揣梦想前行。即使有时会迷失方向,也不要忘记内心深处那盏指引你前进的明灯。它代表着你的希望、你的信念以及对未来的无限憧憬。每一个不曾起舞的日子,都是对生命的辜负;每一段努力拼搏的时光,都在为你的辉煌未来添砖加瓦。
相信自己拥有改变世界的力量。无论是通过小小的善举还是伟大的发明创造,你都有能力为这个世界带来积极的变化。你的存在本身就是一种奇迹,而你所追求的梦想则是让这个奇迹绽放光芒的源泉。即使前路漫漫,即使困难重重,也要坚信自己的潜力是无穷无尽的。
因此,请继续勇敢地追逐你的星辰大海,不畏艰难险阻,不怕孤独寂寞。因为在你心中燃烧的火焰,足以照亮整个宇宙。让每一天都成为展现自我价值的机会,用你的热情和努力去书写属于自己的传奇。因为你不仅是在为自己而活,更是在用自己的方式激励着周围的人。未来正等待着你去开创,而你是那个能够让它变得无比精彩的唯一人选。
讲解这些内容之前,先给大家上波小福利
你们最近有没有使用deep seek,是不是多问几次就服务器繁忙,我来告诉你如何解决,按步骤来
1、浏览器搜索硅基流动,点登录(我登录过,所以界面不一样,没关系哈)然后找到API密钥,自己生成一个密钥,复制一下刚刚生成的密钥

2、再然后浏览器搜索chatbox,安卓点APK下载,下载好之后开始配置,按步骤,API密钥介绍刚刚让你复制的那个

目录
Python爬虫是一种自动化程序,用于从互联网上抓取和提取数据
一、Python爬虫的核心作用
二、典型应用场景
三、技术实现流程
四、进阶技术栈
五、系统学习路径
六、推荐学习资源
七、注意事项
案例 1:静态网页爬虫 - 豆瓣电影 Top250
爬取目标
代码实现
数据存储示例(表格)
案例 2:动态网页爬虫 - 京东商品搜索(Selenium 模拟浏览器)
爬取目标
代码实现
反爬策略说明
关键注意事项
Python爬虫是一种自动化程序,用于从互联网上抓取和提取数据
一、Python爬虫的核心作用
-
数据采集:批量获取商品价格、新闻资讯、社交媒体内容等
-
数据分析:为机器学习/市场研究提供数据源
-
自动化测试:模拟用户操作进行网站监测
-
SEO优化:分析搜索引擎收录和排名
-
学术研究:收集论文数据或实验样本
二、典型应用场景
-
电商比价监控(如跟踪某价格波动)
-
舆情分析(抓取微博热点话题)
-
招聘信息聚合(整合各平台职位数据)
-
学术文献收集(批量下载论文摘要)
-
图像/视频资源归档
-
......
三、技术实现流程
-
目标分析(使用Chrome开发者工具审查网页结构)
-
请求模拟
python
import requests response = requests.get(url, headers=模拟浏览器头)
-
内容解析
python
from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, 'lxml') title = soup.select('div.content > h1::text')
-
数据存储
python
import pandas as pd pd.DataFrame(data).to_csv('result.csv')
-
反爬应对(处理验证码、IP轮换、请求限速)
四、进阶技术栈
-
动态页面处理:Selenium/Puppeteer
-
分布式爬虫:Scrapy-Redis框架
-
验证码破解:Tesseract OCR/深度学习模型
-
数据清洗:Pandas/Numpy
-
代理管理:IP池维护策略
五、系统学习路径,建议哈
-
基础阶段(2-4周):
-
Python语法核心(文件操作、异常处理)
-
HTML/CSS选择器与XPath表达式
-
HTTP协议与REST API原理
-
-
中级阶段(3-5周):
-
Scrapy框架项目实战
-
数据库存储(MySQL/MongoDB)
-
异步请求处理(aiohttp)
-
-
高级阶段(持续提升):
-
逆向工程(JS加密破解)
-
移动端数据抓取(App爬虫)
-
云部署与定时任务(Docker/Kubernetes)
-
六、推荐学习资源
交互式平台:
-
Scrapy官方文档(含多语言版本)
-
Requests高级用法指南
-
菜鸟教程-网络爬虫专题
视频课程:
-
慕课网《Python爬虫工程师系列》看过,我认为非常不错
-
Coursera《Web Scraping and APIs》
实战项目:
-
豆瓣电影TOP250数据采集
-
链家房产信息监控系统
-
微博热点实时追踪
-
跨境电商价格聚合平台
工具集合:
-
代理服务:快代理/ProxyMesh
-
验证码平台:联众打码
-
指纹管理:指纹浏览器
七、注意事项
-
合规性:
-
严格遵守robots.txt协议
-
控制请求频率(建议≥3秒/次)
-
避免抓取个人隐私数据
-
-
道德准则:
-
注明数据来源
-
不进行商业性数据转售
-
尊重网站服务条款
-
建议从简单的静态页面抓取开始,逐步过渡到动态网页和反爬策略应对。可通过GitHub参与开源爬虫项目(如scrapy-demos)获取实战经验。掌握Charles/Fiddler等抓包工具的使用将显著提升调试效率。
案例 1:静态网页爬虫 - 豆瓣电影 Top250
技术栈:requests + BeautifulSoup + pandas
爬取目标
-
电影名称、评分、导演、年份、简介、排名
代码实现
python
import requests from bs4 import BeautifulSoup import pandas as pddef get_douban_top250():headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"}base_url = "https://movie.douban.com/top250"data = []for page in range(0, 250, 25): # 分页逻辑(共10页)url = f"{base_url}?start={page}"response = requests.get(url, headers=headers)soup = BeautifulSoup(response.text, "html.parser")for item in soup.find_all("div", class_="item"):title = item.find("span", class_="title").textrating = item.find("span", class_="rating_num").textinfo = item.find("div", class_="bd").p.get_text(strip=True).split("\n")[0]year = info.split("/")[0].strip()[-4:] # 提取年份director = info.split("/")[1].strip()data.append({"排名": item.find("em").text,"标题": title,"评分": rating,"导演": director,"年份": year})df = pd.DataFrame(data)df.to_csv("douban_top250.csv", index=False, encoding="utf-8-sig")if __name__ == "__main__":get_douban_top250()
数据存储示例(表格)
| 排名 | 标题 | 评分 | 导演 | 年份 |
|---|---|---|---|---|
| 1 | 肖申克的救赎 | 9.7 | 弗兰克·德拉邦特 | 1994 |
| 2 | 霸王别姬 | 9.6 | 陈凯歌 | 1993 |
案例 2:动态网页爬虫 - 京东商品搜索(Selenium 模拟浏览器)
技术栈:Selenium + ChromeDriver + lxml
爬取目标
-
商品名称、价格、店铺、评论数
代码实现
python
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service import pandas as pd import timedef get_jd_products(keyword="手机"):service = Service(executable_path="chromedriver.exe") # 需下载对应版本驱动driver = webdriver.Chrome(service=service)driver.get(f"https://search.jd.com/Search?keyword={keyword}")# 滚动页面加载动态内容for _ in range(3):driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")time.sleep(2)products = []items = driver.find_elements(By.CSS_SELECTOR, ".gl-item")for item in items:try:title = item.find_element(By.CSS_SELECTOR, ".p-name em").textprice = item.find_element(By.CSS_SELECTOR, ".p-price i").textshop = item.find_element(By.CSS_SELECTOR, ".p-shop a").textcomment = item.find_element(By.CSS_SELECTOR, ".p-commit a").textproducts.append({"标题": title,"价格": price,"店铺": shop,"评论数": comment})except Exception as e:print(f"解析失败: {e}")driver.quit()df = pd.DataFrame(products)df.to_excel("jd_products.xlsx", index=False)if __name__ == "__main__":get_jd_products()
反爬策略说明
| 策略 | 实现方法 |
|---|---|
| 请求头伪装 | 设置 User-Agent 模拟浏览器访问 |
| IP 代理轮换 | 使用付费代理服务(如快代理) |
| 动态加载处理 | Selenium 模拟滚动和点击 |
| 请求频率控制 | time.sleep(random.uniform(1,3)) |
关键注意事项
-
合法性:遵守
robots.txt和网站服务协议(豆瓣允许爬取,京东需谨慎) -
反爬突破:动态内容用 Selenium/Playwright,验证码需接入打码平台
-
效率优化:Scrapy 框架 + Redis 分布式爬虫(适合大规模采集)
-
数据清洗:使用
pandas或正则表达式处理原始数据
相关文章:
两个实用且热门的 Python 爬虫案例,结合动态/静态网页抓取和反爬策略,附带详细代码和实现说明
在这个瞬息万变的世界里,保持一颗探索的心,永远怀揣梦想前行。即使有时会迷失方向,也不要忘记内心深处那盏指引你前进的明灯。它代表着你的希望、你的信念以及对未来的无限憧憬。每一个不曾起舞的日子,都是对生命的辜负࿱…...
华象新闻 | 2月20日前谨慎升级 PostgreSQL 版本
各位 PostgreSQL 用户,建议近期进行升级 PostgreSQL 版本。 2月20日计划进行非周期性版本发布 PostgreSQL全球开发团队计划于2025年2月20日进行一次非周期性发布,以解决2025年2月13日更新版本中引入的一个回归问题。 2月13日的更新版本包括了17.3、16.7、…...
跳跃游戏 II - 贪心算法解法
问题描述: 给定一个长度为 n 的 0 索引整数数组 nums,我们从数组的第一个元素 nums[0] 开始。每个元素 nums[i] 表示从索引 i 可以跳跃的最大长度,换句话说,从位置 i,你可以跳到位置 i j,其中 0 < j &…...
图像质量评价指标-UCIQE-UIQM
一、评价指标UCIQE 在文章《An underwater color image quality evaluation metric》中,提到的了评价指标UCIQE(Underwater Colour Image Quality Evaluation),是一种无参考图像质量评价指标,主要用于评估水下图像的质…...
CentOS上安装WordPress
在CentOS上安装WordPress是一个相对直接的过程,可以通过多种方法完成,包括使用LAMP(Linux, Apache, MySQL, PHP)栈或使用更现代的LEMP(Linux, Nginx, MySQL, PHP)栈。 我选择的是(Linux, Nginx…...
Spring Boot 原理分析
spring-boot.version:2.4.3.RELEASE Spring Boot 依赖管理 spring-boot-starter-parent 配置文件管理 <resources> <resource> <directory>${basedir}/src/main/resources</directory> <filtering>true&l…...
Git 本地项目上传 GitHub 全指南(SSH Token 两种上传方式详细讲解)
前言:Git 与 GitHub 的区别与联系 在学习如何将本地项目上传到 GitHub 之前,先来弄清楚 Git 和 GitHub 的区别以及它们之间的联系。 对比项GitGitHub定义分布式版本控制系统(DVCS),用于本地和远程管理代码版本托管 G…...
jenkins服务启动-排错
服务状态为active (exited) 且进程不在 查看/etc/rc.d/init.d/jenkins配置 获取配置参数 [rootfy-jenkins-prod jenkins]# cat /etc/rc.d/init.d/jenkins | grep -v #JENKINS_WAR"/usr/lib/jenkins/jenkins.war" test -r "$JENKINS_WAR" || { echo "…...
CF 144A.Arrival of the General(Java实现)
题目分析 一个n个身高数据,问最高的到最前面,最矮的到最后面的最短交换次数 思路分析 首先,如果数据有重复项,例如示例二中,最矮的数据就是最后一个出现的数据位置,最高的数据就是最先出现的数据位置&…...
SAP-ABAP:SAP中REPORT程序和online程序的区别对比
在SAP中,REPORT程序和Online程序(通常指Dialog程序)是两种常见的ABAP程序类型,它们在用途、结构和用户交互方式上有显著区别。以下是它们的详细对比: 1. 用途 REPORT程序Online程序主要用于数据查询、报表生成和批量数…...
Java发展史
JavaEE的由来 语言的诞生 Java的前身是Oak语言,其目的是搞嵌入式开发开发智能面包机 叮~~~🍞🍞🍞 产品以失败告终 巅峰 网景公司需要网景浏览器打开网页,Oak->Java,进行前端开发(相关技…...
vue3--SVG图标的封装与使用
流程 终端输入- -安装下面这个包 npm install vite-plugin-svg-icons -Dvite.config.ts文件中引入 import {createSvgIconsPlugin} from vite-plugin-svg-iconsvite.config.ts文件中配置plugins选项 将下面代码 createSvgIconsPlugin({//用于指定包含 SVG 图标的文件夹路径…...
Datawhale Ollama教程笔记3
小白的看课思路: Ollama REST API 是什么? 想象一下,你有一个智能的“盒子”(Ollama),里面装了很多聪明的“小助手”(语言模型)。如果你想让这些“小助手”帮你完成一些任务&#…...
学习数据结构(10)栈和队列下+二叉树(堆)上
1.关于栈和队列的算法题 (1)用队列实现栈 解法一:(参考代码) 题目要求实现六个函数,分别是栈初始化,入栈,移除并返回栈顶元素,返回栈顶元素,判空࿰…...
洛谷 P3660 USACO17FEB Why Did the Cow Cross the Road III 题解
题意 有一个圆,圆周上按顺时针方向给出 2 n 2n 2n个点。第 i i i个点的颜色是 c o l o r i color_i colori,其中数据保证 1 ≤ c o l o r i ≤ n 1\le color_i\le n 1≤colori≤n,而且每种不同的颜色有且只有两个点。不存在位置重叠的点…...
【数据结构】(9) 优先级队列(堆)
一、优先级队列 优先级队列不同于队列,队列是先进先出,优先级队列是优先级最高的先出。一般有两种操作:返回最高优先级对象,添加一个新对象。 二、堆 2.1、什么是堆 堆也是一种数据结构,是一棵完全二叉树,…...
如何提升爬虫获取数据的准确性?
提升爬虫获取数据的准确性是确保数据分析和后续应用有效性的关键。以下是一些经过验证的方法和最佳实践,可以帮助提高爬虫数据的准确性: 1. 数据清洗 数据清洗是提升数据准确性的重要步骤,主要包括去除重复数据、处理缺失值和异常值。 去除…...
Obsidian及Zotero常用的插件
Obsidian插件 Minimal Theme Settings(Life,zotero)【必需】 界面样式设置所需插件 Style Settings(Life,zotero)【必需】界面样式设置所需插件 Recent Files(Life,zotero…...
闲鱼IP属地是通过电话号码吗?
在闲鱼这样的二手交易平台上,用户的IP属地信息对于维护交易安全、增强用户间的信任至关重要。然而,关于闲鱼IP属地是如何确定的,不少用户存在疑惑,尤其是它与电话号码之间是否存在关联。本文将深入探讨这一问题,揭示闲…...
C#多线程异步连接MySQL与SQLserver数据库
C#多线程异步连接MySQL与SQLserver数据库 一、前言二、多线程异步连接数据库代码2.1代码块2.2代码说明 参考文档 一、前言 当编写代码连接多台设备上的数据库时,如果采用同步逐个连接的方式,在网络畅通的情况下连接速度尚可,但当其中一台设备…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
