使用 requests 和 BeautifulSoup 解析淘宝商品

news2025/4/5 7:31:17

以下将详细解释如何通过这两个库来实现按关键字搜索并解析淘宝商品信息。

一、准备工作

1. 安装必要的库

在开始之前,确保已经安装了 requestsBeautifulSoup 库。如果尚未安装,可以通过以下命令进行安装:

bash

pip install requests
pip install beautifulsoup4
2. 了解目标网页的结构

在编写爬虫代码之前,需要先了解淘宝搜索结果页面的 HTML 结构。可以通过浏览器的开发者工具(按 F12 打开)来查看页面的 HTML 源码。

例如,当你在淘宝搜索框中输入关键字并点击搜索后,页面会加载出一系列商品信息。这些商品信息通常被包裹在某些特定的 HTML 标签和类名中。

二、编写爬虫代码

以下是使用 requestsBeautifulSoup 解析淘宝商品信息的详细步骤和代码示例。

1. 发起请求

使用 requests 库向淘宝搜索页面发起请求,并获取页面的 HTML 内容。

Python

import requests

def get_page(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8'
    }
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        return response.text
    else:
        print(f"请求失败,状态码:{response.status_code}")
        return None
2. 解析 HTML

使用 BeautifulSoup 解析获取到的 HTML 内容,并提取商品信息。

Python

from bs4 import BeautifulSoup

def parse_product_details(html):
    soup = BeautifulSoup(html, 'html.parser')
    # 淘宝商品信息通常被包裹在 <div class="m-itemlist"> 中
    products = soup.select(".m-itemlist .items .item")
    for product in products:
        try:
            # 提取商品名称
            title = product.select_one(".title").get_text(strip=True)
            # 提取商品价格
            price = product.select_one(".price").get_text(strip=True)
            # 提取店铺名称
            shop = product.select_one(".shop").get_text(strip=True)
            # 提取商品链接
            link = product.select_one("a").get('href')
            print(f"商品名称: {title}")
            print(f"商品价格: {price}")
            print(f"店铺名称: {shop}")
            print(f"商品链接: https:{link}")
            print("------------------------")
        except Exception as e:
            print(f"解析错误:{e}")
3. 搜索商品

将上述两个函数组合起来,实现按关键字搜索并解析商品信息的功能。

Python

def search_products(keyword):
    # 构造搜索 URL
    url = f"https://s.taobao.com/search?q={keyword}"
    html = get_page(url)
    if html:
        parse_product_details(html)

if __name__ == "__main__":
    keyword = input("请输入搜索关键字:")
    search_products(keyword)

三、代码解释

1. get_page 函数
  • 使用 requests.get() 方法向目标 URL 发起请求。

  • 设置了 User-Agent 和其他请求头,以模拟浏览器行为,避免被淘宝识别为爬虫。

  • 检查响应的状态码,确保请求成功。

2. parse_product_details 函数
  • 使用 BeautifulSoup 解析 HTML 内容。

  • 使用 soup.select() 方法选择页面中的商品列表。这里假设商品信息被包裹在 <div class="m-itemlist"> 中。

  • 遍历每个商品项,提取商品名称、价格、店铺名称和链接等信息。

  • 使用 get_text(strip=True) 方法获取文本内容,并去除多余的空白字符。

  • 使用 get('href') 方法获取商品链接。

3. search_products 函数
  • 构造搜索 URL,将关键字拼接到 URL 中。

  • 调用 get_page 函数获取页面 HTML。

  • 调用 parse_product_details 函数解析商品信息。

四、注意事项

  1. 反爬机制

    • 淘宝可能会对爬虫进行限制,例如限制 IP 访问频率、检测异常请求等。如果遇到这种情况,可以尝试以下方法:

      • 使用代理服务器(如代理 IP 池)。

      • 增加请求间隔时间(使用 time.sleep())。

      • 模拟更多浏览器行为(如设置更多请求头)。

  2. 动态加载内容

    • 淘宝的部分内容可能是通过 JavaScript 动态加载的。如果发现 requests 获取到的 HTML 内容中缺少某些数据,可以考虑使用 selenium 来模拟浏览器操作。

  3. 数据存储

    • 如果需要将爬取到的数据存储起来,可以将其保存到文件(如 CSV、JSON)或数据库中。

五、示例输出

假设搜索关键字为 "iPhone 13",运行程序后可能输出如下:

请输入搜索关键字:iPhone 13
商品名称: iPhone 13
商品价格: ¥5499.00
店铺名称: 苹果官方旗舰店
商品链接: https://detail.tmall.com/item.htm?id=1234567890
------------------------
商品名称: iPhone 13 Pro
商品价格: ¥7999.00
店铺名称: 苹果官方旗舰店
商品链接: https://detail.tmall.com/item.htm?id=9876543210
------------------------
...

通过上述步骤和代码,你可以使用 requestsBeautifulSoup 实现按关键字搜索并解析淘宝商品信息的功能。希望这个示例对你有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2328444.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑白彩色相机成像原理

文章目录 黑白相机成像原理彩色相机成像原理 黑白相机成像原理 参考&#xff1a;B站优致谱视觉 光线聚焦&#xff1a;相机镜头将外界景物反射的光线聚焦到相机内部的成像平面上。光电转换&#xff1a;成像平面上通常是图像传感器&#xff0c;黑白相机常用的是CCD&#xff08…

室内指路机器人是否支持环境监测功能?

并非所有室内指路机器人都具备环境监测功能。那些支持环境监测的室内指路机器人&#xff0c;往往在设计上进行了针对性的优化&#xff0c;搭载了一系列先进且实用的传感器。温湿度传感器犹如一位敏锐的 “温度湿度侦探”&#xff0c;时刻精准地监测室内温度与湿度&#xff0c;为…

基于DrissionPage的Taptap热门游戏数据爬虫实战:从Requests到现代爬虫框架的迁移指南(含完整代码复制)

目录 ​编辑 一、项目重构背景与技术选型 1.1 原代码问题分析 1.2 DrissionPage框架优势 二、环境配置与基础改造 2.1 依赖库安装 2.2 基础类改造 三、核心功能模块重构 3.1 请求参数自动化生成 3.2 智能页面渲染 3.3 数据解析优化 四、数据库操作增强 4.1 批量插入…

MINIQMT学习课程Day8

获取qmt账号的资金账号后&#xff0c;我们进入下一步&#xff0c;如何获得当前账号的持仓情况 还是之前的步骤&#xff0c;打开qmt&#xff0c;选择独立交易&#xff0c; 之后使用pycharm&#xff0c;编写py文件。 from xtquant import xtdata from xtquant.xttrader import…

【硬件模块】数码管模块

一位数码管 共阳极数码管&#xff1a;8个LED共用一个阳极 数字编码00xC010xF920xA430xB040x9950x9260x8270xF880x8090x90A0x88B0x83C0xC6D0xA1E0x86F0x8E 共阴极数码管&#xff1a;8个LED共用一个阴极 数字编码00x3F10x0620x5B30x4F40x6650x6D60x7D70x0780x7F90x6FA0x77B0x7…

专为 零基础初学者 设计的最简前端学习路线,聚焦核心内容,避免过度扩展,帮你快速入门并建立信心!

第一阶段&#xff1a;HTML CSS&#xff08;2-3周&#xff09; 目标&#xff1a;能写出静态网页&#xff0c;理解盒子模型和布局。 HTML基础 常用标签&#xff1a;<div>, <p>, <img>, <a>, <ul>, <form> 语义化标签&#xff1a;<head…

详解大模型四类漏洞

关键词&#xff1a;大模型&#xff0c;大模型安全&#xff0c;漏洞研究 1. 引入 promptfoo&#xff08;参考1&#xff09;是一款开源大语言模型&#xff08;LLM&#xff09;测试工具&#xff0c;能对 LLM 应用进行全面漏洞测试&#xff0c;它可检测包括安全风险、法律风险在内…

Java全栈面试宝典:线程安全机制与Spring Boot核心原理深度解析

目录 一、Java线程安全核心原理 &#x1f525; 问题1&#xff1a;线程安全的三要素与解决方案 线程安全风险模型 线程安全三要素 synchronized解决方案 &#x1f525; 问题2&#xff1a;synchronized底层实现全解析 对象内存布局 Mark Word结构&#xff08;64位系统&…

Linux开发工具——apt

&#x1f4dd;前言&#xff1a; 在之前我们已经讲解了有关的Linux基础命令和Linux权限的问题&#xff0c;这篇文章我们来讲讲Linux的开发工具——apt。 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;Linux &#x1f380;CSDN主页 愚润求学 …

嵌入式——Linux系统的使用以及编程练习

目录 一、Linux的进程、线程概念 &#xff08;一&#xff09;命令控制进程 1、命令查看各进程的编号pid 2、命令终止一个进程pid 二、初识Linux系统的虚拟机内存管理 &#xff08;一&#xff09;虚拟机内存管理 &#xff08;二&#xff09;与STM32内存管理对比 三、Lin…

在MacOS 10.15上使用MongoDB

这次是在MacOS 10.15上使用MongoDB。先在豆包问支持MacOS 10.15的MongoDB最新版是什么&#xff0c;答案是MongoDB 5.0。 抱着谨慎怀疑的态度去官方网站查询了一下&#xff0c;答案如下 MongoDB 7.x支持的最低版本MacOS是11MongoDB 6.x支持的最低版本MacOS是10.14 又找deepsee…

思二勋:未来所有的业务都将生于AI、长于AI、成于AI

每个时代都有其标志性的技术&#xff0c;每个技术的产生或极大地解放了个体的劳动力&#xff0c;提高了个体与组织之间的协作效率&#xff0c;或极大地促进了生产效率或使用体验&#xff0c;或将极大地优化了资源配置和供需匹配效率&#xff0c;从而提高人们的生活水平。从青铜…

混合专家模型(MoE):助力大模型实现高效计算

引言 近年来&#xff0c;大模型的参数规模不断攀升&#xff0c;如何在保证性能的前提下降低计算成本和显存消耗&#xff0c;成为业界关注的重点问题。混合专家模型&#xff08;Mixture of Experts, MoE&#xff09;应运而生&#xff0c;通过“分而治之”的设计理念&#xff0c…

【学习笔记】计算机网络(七)—— 网络安全

第7章 网络安全 文章目录 第7章 网络安全7.1 网络安全问题概述7.1.1 计算机网络面临的安全性威胁7.1.2 安全的计算机网络7.1.3 数据加密模型 7.2 两类密码体制7.2.1 对称密钥密码体制7.2.2 公钥密码体制 7.3 鉴别7.3.1 报文鉴别7.3.2 实体鉴别 7.4 密钥分配7.4.1 对称密钥的分配…

预测分析(四):面向预测分析的神经网络简介

文章目录 面向预测分析的神经网络简介神经网络模型1. 基本概念2. 前馈神经网络3. 常见激活函数4. 循环神经网络&#xff08;RNN&#xff09;5. 卷积神经网络&#xff08;CNN&#xff09; MPL结构工作原理激活函数训练方法 基于神经网络的回归——以钻石为例构建预测钻石价格的M…

LLaMA-Factory大模型微调全流程指南

该文档为LLaMA-Factory大模型微调提供了完整的技术指导&#xff0c;涵盖了从环境搭建到模型训练、推理和合并模型的全流程&#xff0c;适用于需要进行大模型预训练和微调的技术人员。 一、docker 容器服务 请参考如下资料制作 docker 容器服务&#xff0c;其中&#xff0c;挂…

为什么芯片半导体行业需要全星APQP系统?--行业研发项目管理软件系统

为什么芯片半导体行业需要全星APQP系统&#xff1f;--行业研发项目管理软件系统 在芯片半导体行业&#xff0c;严格的合规性要求、复杂的供应链协同及高精度质量管理是核心挑战。全星研发项目管理APQP系统专为高门槛制造业设计&#xff0c;深度融合APQP五大阶段&#xff08;从设…

vulkanscenegraph显示倾斜模型(5.6)-vsg::RenderGraph的创建

前言 上一章深入分析了vsg::CommandGraph的创建过程及其通过子场景遍历实现Vulkan命令录制的机制。本章将在该基础上&#xff0c;进一步探讨Vulkan命令录制中的核心封装——vsg::RenderGraph。作为渲染流程的关键组件&#xff0c;RenderGraph封装了vkCmdBeginRenderPass和vkCmd…

基于阿里云可观测产品构建企业级告警体系的通用路径与最佳实践

前言 1.1 日常生活中的告警 任何连续稳定运行的生产系统都离不开有效的监控与报警机制。通过监控&#xff0c;我们可以实时掌握系统和业务的运行状态&#xff1b;而报警则帮助我们及时发现并响应监控指标及业务中的异常情况。 在日常生活中&#xff0c;我们也经常遇到各种各样…

二叉树的ACM板子(自用)

package 二叉树的中序遍历;import java.util.*;// 定义二叉树节点 class TreeNode {int val; // 节点值TreeNode left; // 左子节点TreeNode right; // 右子节点// 构造函数TreeNode(int x) {val x;} }public class DMain {// 构建二叉树&#xff08;层序遍历方式&…