python爬取淘宝商品数据 requests
时间: 2025-03-26 16:04:28 浏览: 3
使用 Python 和 Requests 库抓取淘宝商品数据
由于淘宝网站具有复杂的反爬机制以及动态加载内容,直接使用 requests
抓取淘宝商品数据存在较大难度。不过,在理想情况下,即假设目标页面可以通过简单 HTTP 请求获取的情况下,下面展示了如何构建基础框架来发送请求并解析响应。
构建 GET 请求
为了向服务器发出请求,首先需要导入必要的模块:
import requests
from bs4 import BeautifulSoup
接着定义一个函数用来创建带有适当头部信息的 GET 请求,这有助于模仿真实用户的浏览器行为:
def fetch_page(url, headers=None):
if not headers:
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
"Accept-Language": "zh-CN,zh;q=0.9"
}
try:
response = requests.get(url=url, headers=headers)
response.raise_for_status() # 如果返回的状态码不是200,则抛出异常
return response.text # 返回网页源代码作为字符串
except Exception as e:
print(f"Error occurred while fetching the page: {e}")
return None
此部分说明了如何设置自定义 User-Agent 字符串和其他可能影响服务器端判断的因素[^2]。
解析 HTML 文档结构
一旦获得了完整的HTML文档,就可以利用 Beautiful Soup 来分析其内部结构,并从中提取所需的信息片段:
html_doc = "<div class='item'>...</div>" # 假设这是从fetch_page获得的结果
soup = BeautifulSoup(html_doc, 'lxml') # 创建BeautifulSoup对象实例化
items = soup.find_all('div', attrs={'class': 'item'}) # 查找所有符合条件的商品条目
for item in items:
title = item.select_one('.title').get_text(strip=True) or ''
price = item.select_one('.price').get_text(strip=True) or ''
link = item.a['href'] if item.a else '#'
print({"Title": title, "Price": price, "Link": link})
上述代码段解释了如何定位特定标签及其属性值,从而完成对单个商品详情的抽取工作。
然而值得注意的是,实际操作中淘宝的数据往往由 JavaScript 动态渲染生成,因此单纯依靠 requests
可能无法满足需求;对于这类场景建议考虑 Selenium 或 Puppeteer 等工具配合 Headless 浏览器来进行自动化测试与开发[^3]。
相关推荐


















