全部
常见问题
产品动态
精选推荐

用 Python 写个小爬虫,按关键字搜索天猫商品

管理 管理 编辑 删除

一、为什么想爬天猫搜索页

淘宝/天猫的商品信息丰富、结构清晰,是练习爬虫技术的“黄金练兵场”。
比如你可能想:

  • 按关键词批量获取商品标题、价格、销量
  • 做一个小型选品工具
  • 学习如何绕过动态加载、登录、滑块等反爬机制
  • 今天我们就从最基础的“关键词搜索”入手,带你一步步用 Selenium 实现。


二、技术路线:Selenium 模拟浏览器

天猫搜索页是 动态渲染 的,直接 requests.get 拿到的 HTML 里没有商品数据。
所以采用 Selenium + ChromeDriver 模拟真人操作:打开浏览器 → 输入关键词 → 回车 → 抓取结果。



三、准备工作

  1. 安装依赖

bash

pip install selenium

2.下载 ChromeDriverChromeDriver 官网版本必须与你本地 Chrome 一致!把 chromedriver.exe 放到系统 PATH 或代码同级目录即可。



四、完整代码(可直接跑)

Python

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time, csv, os

def search_tmall(keyword, pages=2):
    # 1. 启动浏览器
    options = webdriver.ChromeOptions()
    options.add_argument('--disable-blink-features=AutomationControlled')
    driver = webdriver.Chrome(options=options)
    driver.implicitly_wait(10)

    # 2. 打开天猫首页
    driver.get('https://www.tmall.com')

    # 3. 定位搜索框 → 输入关键词 → 回车
    search_box = driver.find_element(By.ID, 'mq')
    search_box.send_keys(keyword)
    search_box.send_keys(Keys.ENTER)

    # 4. 准备保存数据
    csv_file = f'tmall_{keyword}.csv'
    with open(csv_file, 'w', newline='', encoding='utf-8-sig') as f:
        writer = csv.writer(f)
        writer.writerow(['商品标题', '价格', '销量', '商品链接'])

        # 5. 翻页抓取
        for page in range(1, pages + 1):
            print(f'正在抓取第 {page} 页...')
            time.sleep(3)  # 等待页面加载

            # 6. 解析当前页商品列表
            items = driver.find_elements(By.CSS_SELECTOR, '.product-iWrap')
            for item in items:
                try:
                    title = item.find_element(By.CSS_SELECTOR, '.productTitle a').text
                    price = item.find_element(By.CSS_SELECTOR, '.productPrice em').text.replace('¥', '')
                    sales = item.find_element(By.CSS_SELECTOR, '.productStatus span:first-child').text
                    link = item.find_element(By.CSS_SELECTOR, '.productTitle a').get_attribute('href')
                    writer.writerow([title, price, sales, link])
                except Exception as e:
                    continue

            # 7. 点击“下一页”
            try:
                next_btn = driver.find_element(By.CSS_SELECTOR, 'a.ui-page-next')
                if 'disabled' in next_btn.get_attribute('class'):
                    break
                next_btn.click()
            except:
                break

    driver.quit()
    print(f'已保存 {csv_file},共抓取 {pages} 页数据。')

if __name__ == '__main__':
    keyword = input('请输入要搜索的关键词:')
    search_tmall(keyword, pages=3)
    


五、运行效果

输入关键词“蓝牙耳机”,程序会自动打开浏览器,完成搜索并翻页,最终生成 tmall_蓝牙耳机.csv,包含:


商品标题价格销量商品链接
Sony WH-1000XM5 官方旗舰...2499月销 3000+https://detail.tmall.com/...


六、常见问题 & 小贴士


问题解决思路
被检测为爬虫--disable-blink-features=AutomationControlled 或使用 undetected-chromedriver
滑块/登录手动扫码一次后保留 Cookie,下次复用 user-data-dir
速度太慢用显式等待 WebDriverWait 替代 time.sleep,或抓接口(需逆向)
想抓更多字段点进详情页后继续用 Selenium 解析,或调用官方 API(需申请)


七、进阶路线

  1. 接入淘宝开放平台官方 APIitem_search_tmall)——合规又稳定
  2. 用 Scrapy + Redis 实现分布式抓取
  3. 上代理池、无头浏览器、验证码识别,打造“工业级”爬虫
  4. 把数据丢进 MongoDB → 用 Pandas 清洗 → 可视化分析,一条龙做选品报告


八、写在最后

爬虫技术再炫酷,也别忘了合法合规这条红线。
天猫有完善的反爬和风控策略,高频抓取可能导致 IP 被封、账号被限制
建议个人学习时:

  • 降低频率(sleep 随机 2~5 秒)
  • 控制总页数(≤5 页)
  • 不用于商业盈利
  • 希望这篇小教程能帮你打开“动态网页抓取”的大门,祝你编码愉快
请登录后查看

one-Jason 最后编辑于2025-09-17 17:45:15

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
打赏
已打赏¥{{reward_price}}
18
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} 加精
{{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服