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

news/2024/12/19 5:31:46/

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/news/1556308.html

相关文章

微信小程序苹果手机自带的数字键盘老是弹出收起,影响用户体验,100%解决

文章目录 1、index.wxml2、index.js3、index.wxss1、index.wxml <!--index.wxml--> <view class="container"><view class="code-input-container"><view class="code-input-boxes"><!-- <block wx:for="{{…

Javascript面试手撕常见题目(回顾一)

1.JS查找文章中出现频率最高的单词? 要在JavaScript中查找文章中出现频率最高的单词&#xff0c;你可以按照以下步骤进行操作&#xff1a; 将文章转换为小写&#xff1a;这可以确保单词的比较是大小写不敏感的。移除标点符号&#xff1a;标点符号会干扰单词的计数。将文章拆…

【go每日一题】 channel实现mutex锁

代码实现 package testimport ("fmt""strconv""testing""time" )type mutexCh struct { //应该大写&#xff0c;给外部所有包用ch chan int // 私有变量&#xff0c;否则外部操作 }func NewMutexCh() *mutexCh {return &mutexCh{…

解决git push出现的报错:Permission denied (publickey)

报错信息 解决办法 依次输入下面的命令即可

VScode:常见问题的原因及其解决方案

报错代码报错原因解决方案npm ERR! code CERT_HAS_EXPIRED证书过期 依次执行以下命令&#xff1a; npm cache clean --force npm config set strict-ssl false 暂无包更新后版本控制文件&#xff08;yarn.lock&#xff09;未更新 yarn.lock删掉 然后再安一遍包(yarn install) …

Vue3 — h()函数

前言&#xff1a; 翻译的官网文档&#xff01;&#xff01;&#xff01; 正文&#xff1a; h()函数用于创建虚拟DOM节点&#xff0c;虚拟DOM是Vue框架中的核心概念&#xff0c;通过它&#xff0c;可以更高效的更新页面内容。 语法&#xff1a; function h(type:string|Comp…

远程控制电脑技术让我们的生活更加简化

在忙碌的现代生活节奏下&#xff0c;远程控制电脑技术已经成为我们生活中不可或缺的一部分。无论是在家办公&#xff0c;还是在旅途中需要紧急处理工作&#xff0c;远程控制电脑都能为我们提供极大的便利。今天&#xff0c;我们就来聊聊远程控制电脑技术是如何简化我们的生活&a…

Jupyter Notebook的安装与使用

Jupyter Notebook 是一个开源的交互式笔记本环境&#xff0c;可用于进行数据分析、可视化、机器学习建模等工作。它支持多种编程语言&#xff0c;包括 Python、R 和 Julia 等&#xff0c;因此非常适合数据科学家和研究人员。 使用 Jupyter Notebook&#xff0c;你可以在一个网页…