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 秒请…...
网页资源下载革新工具:ResourcesSaverExt高效使用指南
网页资源下载革新工具:ResourcesSaverExt高效使用指南 【免费下载链接】ResourcesSaverExt Chrome Extension for one click downloading all resources files and keeping folder structures. 项目地址: https://gitcode.com/gh_mirrors/re/ResourcesSaverExt …...
告别环境配置烦恼:在Windows上通过VSCode与ESP-IDF快速搭建ESP32开发环境
1. 为什么选择VSCodeESP-IDF开发ESP32? 作为一个从Arduino转向ESP32开发的过来人,我深刻理解新手在环境配置上的痛苦。传统方法需要手动安装Python、Git、交叉编译工具链等十多个组件,光是处理环境变量冲突就能让人崩溃一整天。直到发现VSCod…...
从“一次性消耗”到“长效资产”:头部品牌如何用易元AI搭建视频中台
2026年,电商内容竞争已从“数量比拼”升级为“资产价值比拼”。传统视频生产是“一次性消耗”——拍完即弃、素材零散、复用率低,内容投入仅为短期成本;而头部品牌已通过视频资产化与AI内容中台,将内容从“成本项”转为“资产项”…...
GRACE/GRACE-FO数据下载全攻略:从零开始搞定三大机构数据源(含最新FTP地址)
GRACE/GRACE-FO数据获取与处理全流程指南:2024年三大机构最新数据源解析 对于刚接触地球物理学和气候研究领域的研究人员来说,获取和处理GRACE/GRACE-FO卫星数据往往面临诸多挑战。本文将系统介绍2024年三大主流数据机构(JPL、GFZ、CSR&…...
程序员副业指南:CSDN变现全攻略
程序员副业图谱:CSDN技术变现路径分析核心逻辑 围绕技术变现场景构建结构化框架,从技术栈适配性、市场需求匹配度、时间投入产出比三个维度建立评估模型技术咨询类副业路径技术问答悬赏CSDN问答模块的答题变现机制高价值技术领域识别(云原生/…...
Pixel Epic效果可视化:研报生成后自动进行事实核查与数据溯源标注演示
Pixel Epic效果可视化:研报生成后自动进行事实核查与数据溯源标注演示 1. 引言:当研报写作遇上像素冒险 在金融分析和行业研究领域,撰写高质量研究报告一直是个耗时费力的过程。传统方式下,分析师需要花费大量时间收集数据、验证…...
树莓派4B避坑指南:手把手教你安装兼容的Miniconda 4.9.2(aarch64版)
树莓派4B避坑指南:手把手教你安装兼容的Miniconda 4.9.2(aarch64版) 树莓派4B作为一款高性能的单板计算机,凭借其强大的aarch64架构和丰富的扩展能力,成为众多开发者和爱好者的首选。然而,在安装Miniconda这…...
Windows下Power Shell快速激活venv虚拟环境的正确姿势(避坑指南)
Windows下Power Shell快速激活venv虚拟环境的正确姿势(避坑指南) 在Windows平台上使用Python进行开发时,虚拟环境(venv)是隔离项目依赖的必备工具。然而,许多从Linux/macOS转向Windows的开发者,…...
HS2-HF Patch:驱动创作自由的智能补丁系统与需求动态匹配技术
HS2-HF Patch:驱动创作自由的智能补丁系统与需求动态匹配技术 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 在游戏创作领域,玩家对个性…...
Linux打印机驱动foo2zjs全攻略:从安装到优化的完整指南
Linux打印机驱动foo2zjs全攻略:从安装到优化的完整指南 【免费下载链接】foo2zjs A linux printer driver for QPDL protocol - copy of http://foo2zjs.rkkda.com/ 项目地址: https://gitcode.com/gh_mirrors/fo/foo2zjs 价值定位:解决Linux打印…...
