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 秒请…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
