当前位置: 首页 > article >正文

外贸人效率翻倍:用Python+Selenium自动抓取阿里巴巴国际站商家电话到Excel(附完整源码)

外贸人效率革命零代码基础用PythonSelenium自动采集国际站客户数据每天手动复制粘贴上百个商家信息的日子该结束了。作为外贸业务员我们都经历过这样的场景在阿里巴巴国际站反复切换页面机械地记录公司名称、电话、产品类型再粘贴到Excel里整理归档。这个过程不仅耗时耗力还容易出错漏掉关键客户。更头疼的是当需要回溯某个客户时要在成百上千条记录里翻找效率极其低下。1. 自动化工具选型与准备1.1 为什么选择PythonSelenium组合对于非技术背景的外贸从业者来说自动化工具的选择至关重要。我们需要的方案必须具备以下特点低学习曲线不需要深入理解编程原理可视化操作能模拟人工浏览网页的过程稳定可靠能处理各种网页异常情况结果直观最终生成可直接使用的业务数据PythonSelenium完美契合这些需求。Selenium是一个浏览器自动化测试工具可以真实地模拟人类操作浏览器的行为包括点击、滚动、输入等。相比直接调用网站API这种方式虽然速度稍慢但更稳定且不易被反爬机制拦截。必备工具安装清单工具名称作用获取方式Python 3.8脚本运行环境官网下载安装包Chrome浏览器自动化操作载体已预装或官网下载ChromeDriver连接Python与Chrome需与Chrome版本匹配Selenium库浏览器自动化控制pip install seleniumopenpyxl库Excel文件处理pip install openpyxl1.2 环境配置避坑指南许多新手在第一步环境配置就会遇到各种问题。以下是经过实战验证的配置步骤安装Python时务必勾选Add Python to PATH选项ChromeDriver版本必须与本地Chrome浏览器完全匹配查看Chrome版本浏览器地址栏输入chrome://version/下载对应驱动https://chromedriver.chromium.org/downloads将chromedriver.exe放在项目文件夹或系统PATH路径下验证安装是否成功from selenium import webdriver driver webdriver.Chrome() driver.get(https://www.alibaba.com) driver.quit()如果能看到浏览器自动打开并访问阿里巴巴国际站说明环境配置正确。2. 自动化登录与页面导航2.1 处理国际站登录验证阿里巴巴国际站对未登录用户会隐藏联系方式因此自动化第一步是模拟登录。考虑到安全验证机制我们采用半自动化方案from selenium.webdriver import ChromeOptions from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC def init_browser(): options ChromeOptions() # 优化浏览器配置提升性能 options.add_argument(--disable-blink-featuresAutomationControlled) options.add_experimental_option(excludeSwitches, [enable-automation]) options.add_argument(--start-maximized) driver webdriver.Chrome(optionsoptions) return driver def manual_login(driver): driver.get(https://login.alibaba.com) print(请在浏览器中完成登录完成后返回控制台按Enter继续...) input() return driver这种设计让用户亲自完成登录操作既绕过了复杂的验证码识别又保证了账号安全。登录后的cookies会被浏览器保留后续操作无需重复登录。2.2 智能页面加载与等待机制国际站采用动态加载技术快速滚动可能导致数据缺失。我们的解决方案是def scroll_to_bottom(driver): last_height driver.execute_script(return document.body.scrollHeight) while True: driver.execute_script(window.scrollTo(0, document.body.scrollHeight);) time.sleep(2) # 适当等待新内容加载 new_height driver.execute_script(return document.body.scrollHeight) if new_height last_height: break last_height new_height配合显式等待确保元素加载完成wait WebDriverWait(driver, 15) company_list wait.until(EC.presence_of_element_located( (By.CSS_SELECTOR, #J-items-content)))3. 精准数据提取与结构化存储3.1 多维度商家信息抓取策略一个完整的客户档案应包含以下核心字段基础信息公司名称、国家地区、成立年限联系方式电话、手机、地址业务数据主营产品、年营业额、主要市场视觉素材产品图片、公司logo通过XPath定位提取关键数据def extract_company_info(page_source): from lxml import html tree html.fromstring(page_source) info { name: tree.xpath(//h2[classtitle ellipsis]/a/text())[0].strip(), product: tree.xpath(.//div[classvalue ellipsis ph]/text())[0], country: tree.xpath(.//span[classellipsis search]/text())[0], revenue: tree.xpath(.//span[classellipsis search]/text())[1] if len( tree.xpath(.//span[classellipsis search]/text())) 1 else , markets: ,.join(tree.xpath(.//span[classellipsis search]/text())[2:5]) } return info3.2 智能处理联系方式隐藏情况部分商家可能隐藏联系电话我们的代码需要优雅处理这种异常def get_contact_info(driver, detail_url): driver.get(detail_url) try: phone WebDriverWait(driver, 5).until( EC.presence_of_element_located((By.XPATH, //th[contains(text(),Telephone)]/following-sibling::td)) ).text except: phone 未公开 # 类似方法获取地址、手机等信息 ... return contact_info4. 专业级Excel报表生成4.1 动态数据写入与格式优化使用openpyxl库创建专业级Excel报表from openpyxl import Workbook from openpyxl.styles import Font, Alignment from openpyxl.utils import get_column_letter def create_excel_report(data_list, filename客户档案.xlsx): wb Workbook() ws wb.active ws.title 国际站客户 # 设置表头 headers [公司名称, 国家, 主营产品, 年营业额, 电话, 手机, 地址, 主要市场] for col_num, header in enumerate(headers, 1): col_letter get_column_letter(col_num) ws[f{col_letter}1] header ws[f{col_letter}1].font Font(boldTrue) # 写入数据 for row_num, data in enumerate(data_list, 2): ws[fA{row_num}] data.get(name, ) ws[fB{row_num}] data.get(country, ) # 其他字段... # 自动调整列宽 for col in ws.columns: max_length 0 column col[0].column_letter for cell in col: try: if len(str(cell.value)) max_length: max_length len(str(cell.value)) except: pass adjusted_width (max_length 2) * 1.2 ws.column_dimensions[column].width adjusted_width wb.save(filename)4.2 产品图片自动嵌入技术让Excel报告图文并茂的关键代码from openpyxl.drawing.image import Image def insert_images_to_excel(filename, image_folder): wb load_workbook(filename) ws wb.active for row in range(2, ws.max_row 1): company_name ws[fA{row}].value img_path f{image_folder}/{company_name}.jpg if os.path.exists(img_path): img Image(img_path) img.width, img.height 100, 100 # 调整图片大小 ws.add_image(img, fI{row}) # 插入到I列 wb.save(filename)5. 进阶技巧与异常处理5.1 反爬虫规避策略随机延迟在操作间添加不固定间隔import random time.sleep(random.uniform(1, 3))请求限流每处理20个商家休息片刻if index % 20 0: print(防止请求过频休息30秒...) time.sleep(30)代理轮换应对IP封锁需谨慎使用合规代理5.2 常见错误与解决方案注意遇到您的账号暂时不可用提示时应立即停止脚本运行手动检查账号状态常见问题排查表错误现象可能原因解决方案ChromeDriver报错版本不匹配更新驱动至与Chrome相同版本元素找不到页面未完全加载增加等待时间或检查XPath数据错位网站改版更新元素定位逻辑账号异常操作过于频繁降低采集速度添加随机延迟6. 完整工作流整合将各模块组合成端到端解决方案def main(keyword, pages5): # 初始化 driver init_browser() driver manual_login(driver) all_data [] # 分页采集 for page in range(1, pages 1): print(f正在处理第{page}页...) url fhttps://www.alibaba.com/trade/search?page{page}keyword{keyword} driver.get(url) scroll_to_bottom(driver) # 提取当前页所有公司链接 company_links get_company_links(driver.page_source) # 逐个访问详情页 for link in company_links: company_data extract_basic_info(driver.page_source) contact_data get_contact_info(driver, link) all_data.append({**company_data, **contact_data}) # 生成报告 create_excel_report(all_data) download_product_images(all_data) insert_images_to_excel(客户档案.xlsx, product_images) driver.quit() print(客户档案生成完成)这套系统在实际测试中原本需要8小时手动完成的工作现在仅需30分钟即可自动生成带图片的专业客户档案。一位深圳的电子元器件出口商使用后反馈第一个月就通过这个工具开发了15个新客户效率提升超300%

相关文章:

外贸人效率翻倍:用Python+Selenium自动抓取阿里巴巴国际站商家电话到Excel(附完整源码)

外贸人效率革命:零代码基础用PythonSelenium自动采集国际站客户数据 每天手动复制粘贴上百个商家信息的日子该结束了。作为外贸业务员,我们都经历过这样的场景:在阿里巴巴国际站反复切换页面,机械地记录公司名称、电话、产品类型&…...

Emergency Mode Troubleshooting: A Comprehensive Guide to Fixing System Boot Failures with journalctl

1. 紧急模式入门:当系统启动失败时该怎么办 那天早上我正准备部署一个关键服务,结果服务器突然卡在启动界面,屏幕上赫然显示"Welcome to emergency mode!"。作为运维老手,我立刻意识到这是Linux系统最后的自我保护机制…...

美团智能抢券助手:自动抢券、签到领豆,让外卖党每月多省200元

美团智能抢券助手:自动抢券、签到领豆,让外卖党每月多省200元 【免费下载链接】meituan-shenquan 美团 天天神券 地区活动 自动化脚本 项目地址: https://gitcode.com/gh_mirrors/me/meituan-shenquan 你是否也曾遇到过这样的情况:心心…...

Cogito-V1-Preview-Llama-3B模型微调(Fine-tuning)数据准备入门教程

Cogito-V1-Preview-Llama-3B模型微调数据准备入门教程 你是不是也对那些能写代码、能聊天的AI模型感到好奇,甚至想自己动手,教一个模型学会你的专属技能?比如,让它帮你写特定风格的文案,或者理解你公司内部的业务文档…...

3步搞定专业电路图绘制:Draw.io ECE插件让电子工程设计变得简单高效

3步搞定专业电路图绘制:Draw.io ECE插件让电子工程设计变得简单高效 【免费下载链接】Draw-io-ECE Custom-made draw.io-shapes - in the form of an importable library - for drawing circuits and conceptual drawings in draw.io. 项目地址: https://gitcode.…...

在团队协作中直接 Clone 主仓库开发?别慌,这才是正确的 PR 提交流程

在团队协作中直接 Clone 主仓库开发?别慌,这才是正确的 PR 提交流程 很多人以为只有 Fork 了仓库才能提 Pull Request,其实在公司内部项目或有写权限的私有仓库中,直接 Clone 新建分支 推送到主仓 是更常见、更高效的协作方式。…...

cv_unet_image-colorization新手入门:从安装到上色的完整流程

cv_unet_image-colorization新手入门:从安装到上色的完整流程 你是不是有一些珍贵的黑白老照片,想要让它们重现当年的色彩?或者你是一名开发者,想要快速体验AI图像上色的魅力?今天,我将带你从零开始&#…...

新手必看:5分钟学会用Visio绘制PAD图和N-S图(附实例解析)

零基础掌握Visio绘制PAD图与N-S图的实战指南 在软件设计领域,可视化工具的重要性不言而喻。对于刚入门的开发者来说,掌握如何将抽象的逻辑思维转化为直观的图表是一项必备技能。Visio作为微软旗下的专业绘图工具,以其友好的界面和强大的功能&…...

Pyenv虚拟环境管理全攻略:从创建到迁移(Ubuntu20.04实战)

Pyenv虚拟环境管理全攻略:从创建到迁移(Ubuntu20.04实战) 在Python开发中,项目依赖管理一直是个令人头疼的问题。想象一下这样的场景:你正在维护一个基于Django 2.2的老项目,同时又要开发一个使用最新Djang…...

别再手动装依赖了!ROS 2 Humble/Foxy下用rosdep一键搞定工作空间所有包的依赖安装

别再手动装依赖了!ROS 2 Humble/Foxy下用rosdep一键搞定工作空间所有包的依赖安装 "又报错了?缺少libxxx-dev?"——这可能是ROS 2开发者最常遇到的崩溃瞬间。当你在深夜赶项目,colcon build却因为缺失依赖而中断时&…...

SLAM算法评测神器evo:从安装到实战的完整避坑指南

SLAM算法评测神器evo:从安装到实战的完整避坑指南 在机器人定位与建图(SLAM)领域,算法性能评测是验证研究成果可靠性的关键环节。而evo作为一款轻量级、模块化的评测工具,凭借其强大的可视化能力和丰富的指标计算功能…...

从动漫生成到金融风控:LSGAN损失函数在5个行业的落地对比(附数据集下载)

从动漫生成到金融风控:LSGAN损失函数在5个行业的落地对比 当生成对抗网络(GAN)遇上最小二乘损失函数(LSGAN),会擦出怎样的火花?这个看似简单的数学改进,正在悄然改变多个行业的AI应用…...

最近折腾了一波心音信号(PCG)分类的小项目,踩了不少坑也攒了点能直接跑的代码,今天掏出来跟大伙唠唠

MATLAB环境下一种基于连续小波变换和GoogLeNet的PCG信号分类算法 算法运行环境为MATLAB r2021b,共5种PCG信号,即normal, AR,AS,MR,MS五类 算法可迁移至金融时间序列,地震信号,语音信号,声信号,生理信号&…...

vLLM-v0.17.1一文详解:vLLM与MLC-LLM推理框架技术路线对比

vLLM-v0.17.1一文详解:vLLM与MLC-LLM推理框架技术路线对比 1. vLLM框架简介 vLLM是一个专注于大语言模型(LLM)推理和服务的高性能开源库。最初由加州大学伯克利分校的天空计算实验室开发,现已发展成为学术界和工业界共同维护的社区项目。这个框架以其出…...

HunyuanVideo-Foley 安全与权限管理:企业内网API访问控制实践

HunyuanVideo-Foley 安全与权限管理:企业内网API访问控制实践 1. 企业AI服务的安全挑战 随着AI技术在企业内部的广泛应用,视频处理类API的安全管理成为IT部门的新课题。HunyuanVideo-Foley作为专业的音视频处理工具,在私有化部署场景下需要…...

springboot-vue+nodejs 的学生请假销假管理系统

目录技术选型与架构设计系统模块划分审批流程实现销假与统计功能系统集成与部署安全与性能优化项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术选型与架构设计 后端采用SpringBoot框架,提供RESTful API接口&…...

GLM-4v-9b开源镜像实操手册:transformers/vLLM/llama.cpp三端调用

GLM-4v-9b开源镜像实操手册:transformers/vLLM/llama.cpp三端调用 1. 开篇:认识这个强大的多模态模型 今天给大家介绍一个特别实用的AI模型——GLM-4v-9b,这是一个能同时看懂图片和文字的多模态模型。想象一下,你给它一张图片&a…...

视频博主必备!用DeepSeek V2批量生成SRT字幕的3种高阶玩法

视频博主必备!用DeepSeek V2批量生成SRT字幕的3种高阶玩法 在内容创作领域,字幕早已从简单的辅助功能演变为提升观看体验、扩大受众群体的关键工具。对于视频博主而言,高效生成精准字幕不仅能节省大量后期时间,更能为内容带来专业…...

MCP2518FD屏蔽寄存器自动配置算法(11bit标准帧多ID接收场景)

1. 为什么需要自动配置屏蔽寄存器? 在CAN总线通信中,MCP2518FD作为一款常用的CAN控制器,经常需要处理多ID接收的场景。想象一下你正在开发一个汽车电子控制单元(ECU),需要同时接收来自发动机、变速箱、ABS等多个模块的数据。每个…...

3个专业级音视频处理技巧:让新手也能轻松实现高质量转码

3个专业级音视频处理技巧:让新手也能轻松实现高质量转码 【免费下载链接】Videomass Videomass is a free, open source and cross-platform GUI for FFmpeg and yt-dlp 项目地址: https://gitcode.com/gh_mirrors/vi/Videomass 在数字内容创作领域&#xff…...

除了当图床,Cloudflare R2的S3 API还能这么玩?Python脚本批量管理文件实战

解锁Cloudflare R2的S3 API潜能:Python自动化文件管理实战 Cloudflare R2作为兼容S3 API的对象存储服务,其应用场景远不止搭建图床这么简单。对于开发者而言,R2提供的S3兼容接口意味着可以将其无缝集成到各种自动化工作流中。本文将带你探索如…...

低成本AI方案:OpenClaw对接本地Qwen3.5-9B替代ChatGPT API

低成本AI方案:OpenClaw对接本地Qwen3.5-9B替代ChatGPT API 1. 为什么选择本地部署Qwen3.5-9B? 作为一名长期使用OpenAI API的开发者,我最近开始尝试将OpenClaw与本地部署的Qwen3.5-9B模型对接。这个转变源于一个简单但痛苦的事实&#xff1…...

如何突破Cursor AI编程限制实现无限功能体验

如何突破Cursor AI编程限制实现无限功能体验 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial request limit. / …...

记一次 uni-app开发微信小程序 textarea 的“伪遮挡”踩坑实录

文章目录1. 问题描述2. 出现原因3. 解决办法3.1. 给下单按钮添加z-index3.2. 调整textarea的z-index4. 问题解决1. 问题描述 在订单页面中,我使用了 textarea 作为备注输入框,底部有一个固定定位的“下单”按钮。当页面滚动时,textarea 会与…...

优化算法避坑指南:为什么你的罚函数法不收敛?从原理到调参实战

优化算法避坑指南:为什么你的罚函数法不收敛?从原理到调参实战 当你在机器学习模型调参或工程设计优化中反复调整罚函数法参数却始终无法收敛时,是否怀疑过自己遗漏了某些关键细节?本文将带你深入罚函数法的"黑箱"&…...

SiameseUniNLU多任务统一处理实战:医疗问诊文本中症状、疾病、部位联合识别

SiameseUniNLU多任务统一处理实战:医疗问诊文本中症状、疾病、部位联合识别 1. 引言:医疗文本处理的挑战与机遇 医疗问诊文本中包含了大量有价值的信息:患者描述的症状、医生诊断的疾病、身体部位的具体情况等。传统方法需要针对每种信息类…...

深入解析C++菱形继承:虚基表的内存布局与优化策略

1. 菱形继承的本质问题 我第一次遇到菱形继承问题时,正在开发一个教育管理系统。当时需要设计Assistant类继承Student和Teacher,结果发现这两个父类都有从Person继承的_age成员。这导致每个Assistant对象里存了两份_age——这就是典型的数据冗余问题。 …...

从OV2640升级到OV3660:除了像素提升,ESP32-Cam硬件设计要注意这几点

从OV2640升级到OV3660:硬件设计中的隐形挑战与实战指南 当我们在ESP32-Cam项目中从OV2640升级到OV3660摄像头模组时,很多工程师的第一反应是检查引脚兼容性——这当然没错,但真正的挑战往往藏在那些数据手册不会明确标注的细节里。去年我们团…...

解锁3大技术场景:PptxGenJS自动化演示文稿实战指南

解锁3大技术场景:PptxGenJS自动化演示文稿实战指南 【免费下载链接】PptxGenJS Create PowerPoint presentations with a powerful, concise JavaScript API. 项目地址: https://gitcode.com/gh_mirrors/pp/PptxGenJS 在数字化办公与开发领域,演示…...

告别零散烧录:一个脚本搞定Petalinux 2020.1 ZynqMP QSPI全镜像生成与烧写

告别零散烧录:Petalinux 2020.1 ZynqMP QSPI全镜像自动化生成实战 在嵌入式Linux开发中,QSPI Flash烧录往往是最后一道工序,也是最容易出错的环节之一。传统分步烧录方式不仅效率低下,还容易因地址偏移计算错误导致启动失败。本文…...