python下几个淘宝、天猫、京东爬虫实例
以下是使用Python编写的针对淘宝、天猫、京东详情页的爬虫实例。请注意,这些实例仅供参考,实际使用时可能需要根据网站结构的变化进行调整,并且需要遵守各平台的爬虫协议和法律法规。
淘宝详情页爬虫实例
-
环境准备:
- Python 3.x
- Selenium库
- ChromeDriver(或对应浏览器的WebDriver)
-
代码实现:
from selenium import webdriver | |
from selenium.webdriver.common.by import By | |
from selenium.webdriver.common.keys import Keys | |
import time | |
import csv | |
# 初始化WebDriver | |
driver = webdriver.Chrome() | |
# 打开淘宝并搜索商品 | |
driver.get('https://www.taobao.com/') | |
driver.maximize_window() # 最大化浏览器窗口 | |
driver.implicitly_wait(10) # 设置隐式等待时间 | |
# 搜索商品(这里以“手机”为例) | |
search_keyword = '手机' | |
driver.find_element(By.XPATH, '//*[@id="q"]').send_keys(search_keyword) | |
driver.find_element(By.XPATH, '//*[@id="J_TSearchForm"]/div[1]/button').click() | |
# 等待搜索结果加载完成 | |
time.sleep(5) | |
# 解析搜索结果页面并提取商品详情页链接 | |
product_links = [] | |
for item in driver.find_elements(By.XPATH, '//div[@class="grid g-clearfix"]/div/div'): | |
detail_url = item.find_element(By.XPATH, './/div[@class="pic"]/a').get_attribute('href') | |
product_links.append(detail_url) | |
# 遍历商品详情页链接并提取所需信息 | |
with open('taobao_products.csv', 'w', newline='', encoding='utf-8') as csvfile: | |
fieldnames = ['title', 'price', 'seller', 'location', 'detail_url'] | |
writer = csv.DictWriter(csvfile, fieldnames=fieldnames) | |
writer.writeheader() | |
for link in product_links: | |
driver.get(link) | |
time.sleep(3) # 等待详情页加载完成 | |
title = driver.find_element(By.XPATH, '//*[@id="J_DetailHeader"]/div[1]/h1').text | |
price = driver.find_element(By.XPATH, '//*[@id="J_StrPrice"]/em').text | |
seller = driver.find_element(By.XPATH, '//*[@id="J_OtherOptions"]/div[1]/p[1]/a').text | |
location = driver.find_element(By.XPATH, '//*[@id="J_OtherOptions"]/div[1]/p[2]/span').text | |
writer.writerow({ | |
'title': title, | |
'price': price, | |
'seller': seller, | |
'location': location, | |
'detail_url': link | |
}) | |
# 关闭WebDriver | |
driver.quit() |
天猫详情页爬虫实例
- 环境准备:与淘宝相同。
- 代码实现(以搜索“羽毛球”为例):
from selenium import webdriver | |
from selenium.webdriver.common.by import By | |
from selenium.webdriver.support.ui import WebDriverWait | |
from selenium.webdriver.support import expected_conditions as EC | |
import time | |
import csv | |
# 初始化WebDriver | |
driver = webdriver.Chrome() | |
# 打开天猫并搜索商品 | |
driver.get('https://list.tmall.com/') | |
driver.maximize_window() | |
driver.implicitly_wait(10) | |
# 搜索商品(这里以“羽毛球”为例) | |
search_keyword = '羽毛球' | |
driver.get(f'https://list.tmall.com/search_product.htm?q={search_keyword}') | |
# 等待搜索结果加载完成 | |
wait = WebDriverWait(driver, 10) | |
page_total_element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.tm-pagination .ui-page-item.ui-page-item-last em'))) | |
page_total = page_total_element.text | |
# 解析搜索结果页面并提取商品信息 | |
product_info = [] | |
for page in range(1, int(page_total) + 1): | |
try: | |
# 如果是非第一页,则进行翻页操作 | |
if page > 1: | |
input_element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.ui-page > div.ui-page-wrap > b.ui-page-skip > form > input.ui-page-skipTo'))) | |
input_element.clear() | |
input_element.send_keys(page) | |
submit_button = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.ui-page > div.ui-page-wrap > b.ui-page-skip > form > button.ui-btn-s'))) | |
submit_button.click() | |
time.sleep(2) # 等待页面加载 | |
# 提取当前页的商品信息 | |
goods = driver.find_elements(By.CSS_SELECTOR, '#J_ItemList .product') | |
for good in goods: | |
title = good.find_element(By.CSS_SELECTOR, '.productTitle').text | |
price = good.find_element(By.CSS_SELECTOR, '.productPrice').text.replace('¥', '') | |
detail_url = good.find_element(By.CSS_SELECTOR, '.productImg').get_attribute('href') | |
product_info.append({ | |
'title': title, | |
'price': price, | |
'detail_url': detail_url | |
}) | |
except Exception as e: | |
print(f"Error on page {page}: {e}") | |
# 将商品信息写入CSV文件 | |
with open('tmall_products.csv', 'w', newline='', encoding='utf-8') as csvfile: | |
fieldnames = ['title', 'price', 'detail_url'] | |
writer = csv.DictWriter(csvfile, fieldnames=fieldnames) | |
writer.writeheader() | |
for product in product_info: | |
writer.writerow(product) | |
# 关闭WebDriver | |
driver.quit() |
京东详情页爬虫实例
- 环境准备:与淘宝相同。
- 代码实现(以搜索“手机”为例,并提取详情页图片):
from selenium import webdriver | |
from selenium.webdriver.common.by import By | |
from selenium.webdriver.support.ui import WebDriverWait | |
from selenium.webdriver.support import expected_conditions as EC | |
import time | |
import os | |
import requests | |
# 初始化WebDriver | |
driver = webdriver.Chrome() | |
# 打开京东并搜索商品 | |
driver.get('https://search.jd.com/') | |
driver.maximize_window() | |
driver.implicitly_wait(10) | |
# 搜索商品(这里以“手机”为例) | |
search_keyword = '手机' | |
driver.find_element(By.XPATH, '//*[@id="key"]').send_keys(search_keyword) | |
driver.find_element(By.XPATH, '//*[@id="search"]/div/button').click() | |
# 等待搜索结果加载完成 | |
wait = WebDriverWait(driver, 10) | |
# 提取商品详情页链接并进入详情页提取图片 | |
product_links = [] | |
for item in driver.find_elements(By.CSS_SELECTOR, '.gl-item'): | |
detail_url = item.find_element(By.CSS_SELECTOR, '.p-name em a').get_attribute('href') | |
product_links.append(detail_url) | |
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' | |
} | |
for link in product_links: | |
driver.get(link) | |
time.sleep(3) # 等待详情页加载完成 | |
# 提取图片链接并下载 | |
image_urls = [] | |
try: | |
images = driver.find_elements(By.CSS_SELECTOR, '.sku-gallery img') | |
for img in images: | |
image_urls.append(img.get_attribute('src')) | |
except Exception as e: | |
print(f"Error extracting images from {link}: {e}") | |
continue | |
image_dir = f'./jd_images/{link.split("/")[-1]}' | |
if not os.path.exists(image_dir): | |
os.makedirs(image_dir) |
相关文章:
python下几个淘宝、天猫、京东爬虫实例
以下是使用Python编写的针对淘宝、天猫、京东详情页的爬虫实例。请注意,这些实例仅供参考,实际使用时可能需要根据网站结构的变化进行调整,并且需要遵守各平台的爬虫协议和法律法规。 淘宝详情页爬虫实例 环境准备: Python 3.xSe…...

级联树结构TreeSelect和上级反查
接口返回结构 前端展示格式 前端组件 <template><div ><el-scrollbar height"70vh"><el-tree :data"deptOptions" :props"{ label: label, children: children }" :expand-on-click-node"false":filter-node-me…...

gradle下载慢解决方案2024 /12 /1android studio (Windows环境)
gradle下载慢解决方案2024 /12 /1 默认环境配置好了,环境配置和程序安装请出门右转 打开软件,点击右上角设置,找到如下设置页 选择本地安装并制定好你已经安装好的 gradle 应用保存即可 全局插件环境配置(新版本可以直接在设置中添加了) 找对应位置添加国内源并把前面的内置源…...
Python+OpenCV系列:GRAY BGR HSV
以下是 GRAY、BGR 和 HSV 三种色彩空间的对比,涵盖了它们的定义、特点、应用场景和优缺点: 1. 定义 GRAY: 灰度图像仅包含亮度信息,每个像素用一个值(通常在0到255之间)表示亮度(黑到白&#x…...
丢垃圾视频时间检测 -- 基于状态机的实现
文章目录 OverviewKey PointsPseudo-code Overview 需要考虑的方面 状态定义和转换条件时序约束空间约束异常处理 状态机的设计需要考虑的场景: 没有人人进入人携带垃圾人离开但垃圾留下垃圾消失异常情况(检测失败、多人多垃圾等) Key P…...

【QT】一个简单的串口通信小工具(QSerialPort实现)
目录 0.简介 1.展示结果 1)UI界面: 2)SSCOM(模拟下位机收发): 3)VSPD虚拟串口驱动(连接上位机和下位机的串口): 4)实际收发消息效果及视频演…...

24/12/5 算法笔记<强化学习> doubleDQN,duelingDQN
我们前面了解了DQN网络的一些知识,然而DQN还有一些改进的方法,比如doubleDQN和duelingDQN,我们先来将一下doubleDQN和DQN. 先来对比一下 单一网络 vs. 双重网络 DQN:是一个深度神经网络来估计每个动作的Q值 DDQN:使用两个独立的深度神经网络…...
道可云人工智能元宇宙每日资讯|全国工商联人工智能委员会成立会议在南京举办
道可云元宇宙每日简报(2024年12月5日)讯,今日元宇宙新鲜事有: 全国工商联人工智能委员会成立会议在南京举办 全国工商联人工智能委员会成立会议日前在江苏省南京市举办。中央统战部副部长、全国工商联党组书记沈莹出席会议并讲话…...

MySQL数据库(2)-检查安装与密码重置
1. 数据库下载安装 下载地址:MySQL :: Download MySQL Community Server 2. My.ini配置文件 my.ini 文件通常在MySQL安装过程中自动创建, 并且可以根据需要进行编辑以调整服务器的行为。 3. 配置环境变量 4. 查询版本号 查询版本号:mysql…...
C# 13 中的新增功能
C# 12 中的新增功能C# 11 中的新增功能C# 10 中的新增功能C# 9.0 中的新增功能C# 8.0 中的新增功能C#7.0中有哪些新特性?C#6.0中10大新特性的应用和总结C# 5.0五大新特性 将C#语言版本升级为预览版 C# 13 包括一些新增功能。 可以使用最新的 Visual Stu…...

视频自学笔记
一、视频技术基本框架 二、视频信号分类 2.1信号形式 2.1.1模拟视频 模拟视频是指由连续的模拟信号组成的视频图像,以前所接触的电影、电视都是模拟信号,之所以将它们称为模拟信号,是因为它们模拟了表示声音、图像信息的物理量。摄像机是获…...

easyexcel 导出日期格式化
1.旧版本 在新的版本中formate已经被打上废弃标记。那么不推荐使用这种方式。 2.推荐方式 推荐使用另外一种方式【 Converter 】代码如下,例如需要格式化到毫秒【yyyy-MM-dd HH:mm:ss SSS】级别 创建一个公共Converter import com.alibaba.excel.converters.Conv…...

02-开发环境搭建
02-开发环境搭建 鸿蒙开发环境的准备主要分为以下环节: 注册开发者实名认证创建应用下载安装开发工具新建工程 注册开发者 在华为开发者联盟网站上,注册成为开发者,并完成实名认证。 打开华为开发者联盟官网,点击“注册”进入…...

DBeaver导入csv到数据库
DBeaver的图标是一只小浣熊,查了下Beaver确实是浣熊的意思,看起来还是蛮可爱的。 业务上有需要导入csv到数据库的需求,试用了下,发现挺好用的。有很多属性可以定制。 导入步骤: 1.建表,表字段与待导入cs…...
React第十一节 组件之间通讯之发布订阅模式(自定义发布订阅器)
组件之间通讯常用方案 1、通过props 2、通过context 3、通过发布订阅模式 4、通过Redux 后面会有专栏介绍 什么情况下使用发布订阅模式 a、当我们想要兄弟组件之间通讯,而共同的父组件中又用不到这些数据时候; b、当多个毫无相关的组件之间想要进行数据…...
tcpreplay/tcpdump-重放网络流量/捕获、过滤和分析数据包
tcpdump 是一个网络数据包分析工具,通过捕获并显示网络接口上传输的数据包,帮助用户分析网络流量。 原理:用户态通过 libpcap 库控制数据包捕获,内核态通过网卡驱动获取数据包。 核心功能包括:捕获、过滤和分析数据包…...
ASPICE评估体系概览:对象、范围与参考标准解析
ASPICE(汽车软件过程改进和能力确定)是一个框架,它被广泛应用于汽车行业的软件开发和维护过程的改进。 它类似于软件工程领域的CMMI(能力成熟度模型集成),但专门针对汽车行业,考虑了该行业特有…...

力扣92.反转链表Ⅱ
题目描述 题目链接92. 反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 输入:head [1,2,3,4,5], left …...
Java设计模式之适配器模式:深入JDK源码探秘Set类
在Java编程中,Set类作为一个不允许存储重复元素的集合,广泛应用于数据去重、集合运算等场景。然而,你是否曾好奇Set类是如何在底层实现元素唯一性判断的?这背后隐藏的力量正是适配器模式。 适配器模式简介 适配器模式࿰…...

java八股-流量封控系统
文章目录 请求后台管理的频率-流量限制流量限制的业务代码UserFlowRiskControlFilter 短链接中台的流量限制CustomBlockHandler 对指定接口限流UserFlowRiskControlConfigurationSentinelRuleConfig 请求后台管理的频率-流量限制 根据登录用户做出控制,比如 x 秒请…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...