Python利用chromedriver爬取商品主图数据

ops/2024/12/21 5:53:45/

1.需要安装chromedriver

Chrome下载地址
ChromeDriver官网下载地址:https://sites.google.com/chromium.org/driver/downloads

ChromeDriver官网最新版下载地址:https://googlechromelabs.github.io/chrome-for-testing/

ChromeDriver国内镜像下载地址:https://registry.npmmirror.com/binary.html?path=chromedriver/

ChromeDriver国内镜像最新版下载地址:https://registry.npmmirror.com/binary.html?path=chrome-for-testing/

本地Chrome版本
确认你的Chrome浏览器版本。你可以在Chrome浏览器中打开   chrome://settings/help 查看版本号。 

2.配置环境变量

使用 sysdm.cpl 打开环境变量

编辑 系统变量 中的 Path 变量,把 ChromeDriver 解压路径追加在Path变量中。

3.python pip命令导包

python">import os
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
import pandas as pd
import chardet
import requests
import time# 定义保存图片的文件夹路径
save_folder = 'jd_item_images'
if not os.path.exists(save_folder):os.makedirs(save_folder)# 检测并读取CSV文件编码
def detect_encoding(file_path):with open(file_path, 'rb') as file:raw_data = file.read(1000)result = chardet.detect(raw_data)return result['encoding']csv_file_path = 'jd_sku2.csv'  # 确保这是你的CSV文件的正确路径
encoding = detect_encoding(csv_file_path)# 使用检测到的编码来读取整个文件
df = pd.read_csv(csv_file_path, encoding=encoding)# 获取商品ID列表(假设商品编号在第三列,即索引为2)
product_ids = df.iloc[:, 2].dropna().astype(str).tolist()# 设置Chrome选项
chrome_options = Options()
chrome_options.add_argument("--headless")  # 不打开浏览器窗口
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")# 指定ChromeDriver路径
service = Service(executable_path=r'D:\chromedriver\chromedriver-win64\chromedriver.exe')  # 替换为你的chromedriver路径# 初始化WebDriver
driver = webdriver.Chrome(service=service, options=chrome_options)for product_id in product_ids:try:url = f'https://item.jd.com/{product_id}.html'driver.get(url)time.sleep(5)  # 等待页面加载完成,可以根据实际情况调整等待时间# 获取并解析HTML结构page_source = driver.page_sourcesoup = BeautifulSoup(page_source, 'html.parser')# 查找charset为gbk的<script>标签# script_gbk_tag = soup.find('script', {'charset': 'gbk'})# if script_gbk_tag:##     print(f"Content of <script charset='gbk'> for product ID {product_id}:")##     print("首图链接")  # 分隔线##     print(script_gbk_tag.string.strip())##     # 666666666666666##     print("-" * 80)  # 分隔线## else:#     print(f"No <script charset='gbk'> found for product ID: {product_id}")# 尝试获取商品图片链接并保存图片img_tag = soup.find('img', {'id': 'spec-img'}) or soup.find('img', {'class': 'jqzoom'})if img_tag and 'src' in img_tag.attrs:img_url = 'https:' + img_tag['src'] if img_tag['src'].startswith('//') else img_tag['src']img_response = requests.get(img_url, timeout=10)img_response.raise_for_status()img_save_path = os.path.join(save_folder, f'{product_id}.jpg')with open(img_save_path, 'wb') as img_file:img_file.write(img_response.content)print(f'Successfully saved image for product ID: {product_id}')else:print(f'Failed to find image URL for product ID: {product_id}')except Exception as e:print(f'Error processing product ID {product_id}: {e}')# 关闭浏览器
driver.quit()


http://www.ppmy.cn/ops/143683.html

相关文章

社区团购管理系统(源码+数据库)

355.基于SpringBoot的社区团购管理系统&#xff0c;系统包含两种角色&#xff1a;管理员、用户,系统分为前台和后台两大模块&#xff0c;主要功能如下 二、项目技术 编程语言&#xff1a;Java 数据库&#xff1a;MySQL 项目管理工具&#xff1a;Maven 前端技术&#xff1a;Vue …

基于Python的订单数据分析与可视化

概述 本文档详细介绍了使用Python进行订单数据分析和可视化的过程。我们的目标是从存储在文本文件中的JSON数据中提取信息&#xff0c;对这些数据进行处理和聚合&#xff0c;最后以图表的形式展示分析结果。本文档将详细介绍所使用的技术、编程核心思想、实现过程中遇到的问题…

el-table中合并垂直方向的单元格

el-table中合并垂直方向的单元格 一、合并垂直方向单元格&#xff0c;有相同字段的合并一起 一、合并垂直方向单元格&#xff0c;有相同字段的合并一起 合并一起的都有相同的字段mergeType <el-tableclass"merge-table":data"tableData"v-loading"…

旅游系统旅游小程序PHP+Uniapp

旅游门票预订系统&#xff0c;支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统 更新日志 V1.3.0 1、修复富文本标签 2、新增景点入驻【高级版本】3、新增门票核销【高级版】4、新增门票端口【高级版】

分布式链路追踪-03-Jaeger、Zipkin、skywalking 中的 span 是如何设计的?

开源项目 auto-log 自动日志输出 Jaeger、Zipkin 中的 spanId 是如何生成的&#xff1f; 在 Jaeger 和 Zipkin 这两个分布式跟踪系统中&#xff0c;Span ID 是通过不同的方法生成的。 下面分别介绍它们的生成方式&#xff1a; Jaeger 中的 Span ID 生成&#xff1a; 在 Ja…

基于Embedding模型的向量数据库与信息检索技术

前言 在信息爆炸的时代&#xff0c;如何从海量数据中高效检索出有价值的信息成为了一个重要的挑战。传统的基于关键词的检索方法已经难以满足日益增长的数据量和复杂的信息需求。近年来&#xff0c;随着深度学习技术的发展&#xff0c;Embedding模型和向量数据库逐渐成为了信息…

android recycleview 中倒计时数据错乱

原因 recyceleview 当页面划出屏幕外后&#xff0c;默认会有两条进入缓存区&#xff0c;这些item的结构会被保存&#xff0c;数据被清除&#xff0c;方便其他新进入屏幕的数据复用item&#xff0c;超过两条外的item会进入缓存池被完全销毁重用。 如果我们的页面上有editText 或…

通向智能的未来:实现通用人工智能的挑战与机遇

在人工智能领域&#xff0c;实现通用人工智能&#xff08;AGI&#xff09;是一个复杂且多维度的挑战。AGI的目标是创建一个能够像人类一样思考、学习和执行多种任务的系统&#xff0c;具备跨领域的广泛适用性&#xff0c;并能够处理未曾遇到的问题&#xff0c;无需额外的人工干…