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

淘宝商品搜索爬虫:Python 实现教程

在大数据时代,获取电商平台的商品信息对于市场调研、数据分析等有着重要意义。淘宝作为国内知名的电商平台,其商品数据丰富多样。本文将详细介绍如何使用 Python 编写爬虫,按关键字搜索淘宝商品并获取相关信息。

一、准备工作

在开始编写爬虫之前,需要安装一些必要的 Python 第三方库,包括 seleniumpyqueryopenpyxl。这些库可以通过 pip 命令安装:

bash

pip install pyquery
pip install selenium
pip install openpyxl

此外,还需要下载与浏览器版本匹配的 ChromeDriver。

二、代码实现

1. 初始化

首先,需要导入所需的库,并设置 ChromeDriver 的选项:

Python

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from pyquery import PyQuery as pq
import time
import openpyxl as op# 设置 ChromeDriver 选项
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ['enable-automation'])
driver = webdriver.Chrome(options=options)
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})
driver.maximize_window()
driver.get('https://www.taobao.com')
wait = WebDriverWait(driver, 20)

2. 搜索商品

通过模拟浏览器操作,输入关键字并点击搜索按钮:

Python

def search_goods(keyword):try:print("正在搜索: {}".format(keyword))input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#q")))submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#J_TSearchForm > div.search-button > button')))input.send_keys(keyword)submit.click()time.sleep(2)print("搜索完成!")except Exception as exc:print("search_goods函数错误!Error:{}".format(exc))

3. 获取商品信息

在搜索结果页面,通过解析 HTML 获取商品的标题、价格、销量等信息:

Python

def get_goods(page):try:html = driver.page_sourcedoc = pq(html)items = list(doc('div.content--CUnfXXxv > div > div').items())for item in items:title = item.find('.title--qJ7Xg_90 span').text()price = item.find('.innerPriceWrapper--aAJhHXD4').text()deal = item.find('.realSales--XZJiepmt').text()location = item.find('.procity--wlcT2xH9 span').text()shop = item.find('.shopNameText--DmtlsDKm').text()postText = item.find('.subIconWrapper--Vl8zAdQn').text()t_url = item.find('.doubleCardWrapperAdapt--mEcC7olq').attr('href')shop_url = item.find('.TextAndPic--grkZAtsC a').attr('href')img_url = item.find('.mainPicAdaptWrapper--V_ayd2hD img').attr('src')product = {'Page': page,'title': title,'price': price,'deal': deal,'location': location,'shop': shop,'isPostFree': postText,'url': t_url,'shop_url': shop_url,'img_url': img_url}print(product)except Exception as exc:print("get_goods函数错误!Error:{}".format(exc))

4. 翻页操作

为了获取多页数据,需要实现翻页功能:

Python

def page_turning(page_number):try:print("正在翻页: 第{}页".format(page_number))time.sleep(2)submit = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="search-content-leftWrap"]/div[2]/div[4]/div/div/button[2]')))submit.click()wait.until(EC.text_to_be_present_in_element((By.XPATH, '//*[@id="search-content-leftWrap"]/div[2]/div[4]/div/div/span[1]/em'), str(page_number)))print("已翻至: 第{}页".format(page_number))except Exception as exc:print("page_turning函数错误!Error:{}".format(exc))

5. 主函数

最后,将上述功能整合到主函数中:

Python

def Crawer_main(keyword, pageStart, pageEnd):try:search_goods(keyword)if pageStart != 1:turn_pageStart(pageStart)get_goods(pageStart)for i in range(pageStart + 1, pageEnd + 1):page_turning(i)get_goods(i)except Exception as exc:print("Crawer_main函数错误!Error:{}".format(exc))

三、运行与结果

运行程序后,根据输入的关键字和页码范围,爬虫将自动搜索并获取淘宝商品信息。这些信息可以进一步存储到 Excel 文件中,方便后续分析。

通过上述代码,您可以轻松实现按关键字搜索淘宝商品的功能。需要注意的是,淘宝的反爬机制较为复杂,可能需要根据实际情况调整代码。同时,应遵守淘宝的使用条款,合理使用爬取的数据。

希望这篇文章对您有所帮助!如果您在实现过程中遇到任何问题,欢迎随时交流讨论。

http://www.xdnf.cn/news/22105.html

相关文章:

  • 江苏广电HC2910-创维代工-Hi3798cv200-2+8G-海美迪安卓7.0-强刷包
  • 深度学习-torch,全连接神经网路
  • 软硬链接与动静态库基本概念(快速回顾)
  • 浅析数据库面试问题
  • `get_peft_model` 是 `peft` 库什么方法
  • 【CPP】死锁产生、排查、避免
  • 国内主要半导体厂家
  • Java 接入deepseek(非流式)
  • 数据资产登记导则详解 | 企业如何规范化登记与管理数据资产?
  • 机械臂速成小指南(二十五):机械臂与人工智能的有机结合
  • 基于 S2SH 架构的企业车辆管理系统:设计、实现与应用
  • OOM 未触发 JVM 崩溃的可能原因
  • 椰汁椰肉生产车间设计
  • 怎么隐藏QTabWidget内的页面
  • Git 解决“Filename too long”问题
  • 企业应用大模型报告:如何应对变革,构建专属“我的AI”
  • 生物化学笔记:医学免疫学原理22 肿瘤及肿瘤治疗
  • vue3+vite 实现.env全局配置
  • 大模型时代:AI应用的变革与挑战
  • 冰箱在储存各种疫苗时要经过多少道程序又会面临哪些风险?
  • linux获取cpu使用率(sy%+us%)
  • 文件二进制读写和文本读写以及编码解码
  • Android 12系统静态壁纸深度定制指南
  • day2-小白学习JAVA---java第一个程序
  • 电力资源配置逐步从计划模式转向市场驱动
  • 内存函数和动态内存管理
  • leetcode刷题日记——同构字符串
  • 北京SMT贴片厂精密制造关键工艺
  • MySQL触发器和函数的详细示例
  • FairMOT算法详解