CSV文件自动化生成:用Pandas与Datetime高效处理京东商品信息

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 在电商竞争激烈的背景下,实时掌握商品价格和库存信息至关重要。本文介绍如何使用Python的`pandas`和`datetime`库从京东抓取商品名称、价格等信息,并生成CSV文件。结合代理IP技术,提升爬取效率和稳定性。通过设置请求头、使用代理IP和多线程技术,确保数据抓取的连续性和成功率。最终,数据将以带时间戳的CSV文件形式保存,方便后续分析。

爬虫代理.png

在电商行业的激烈竞争下,实时掌握商品的价格波动和库存信息是企业成功的关键。通过自动化爬虫技术,我们可以从京东等电商平台抓取商品信息,帮助企业和个人进行市场监控和价格分析。本文将详细介绍如何使用Python的pandasdatetime库抓取京东商品的名称、价格等信息,并自动生成CSV文件。同时,结合代理IP技术提升爬取效率。

1. 概述

抓取电商平台的数据,尤其是像京东这样的热门网站,面临诸多挑战。主要包括反爬机制、IP封禁以及频繁请求的限制。为应对这些问题,本文结合了以下几项关键技术:

  • pandas: 用于处理爬取的数据,并将其保存为CSV文件,便于后续分析。
  • datetime: 用于生成带时间戳的文件名,方便对不同时间段的数据进行区分和管理。
  • 代理IP技术: 使用代理IP可以绕过IP请求频率限制,以保证爬取的连续性。本文使用爬虫代理服务作为示例。
  • User-Agent 和 Cookies: 模拟浏览器访问,避免被目标网站识别为爬虫,提高数据抓取的成功率。

在本文中,我们将展示如何从京东抓取商品的名称、价格等信息,并将其以CSV格式保存。

2. 细节

2.1 爬虫环境设置

首先,我们需要设置HTTP请求的headers,以模拟浏览器访问京东,防止被网站识别为爬虫。同时,使用代理IP来避免因频繁请求导致的IP封禁。

import requests
import pandas as pd
from datetime import datetime
from bs4 import BeautifulSoup

# 代理IP配置 (以亿牛云为例 www.16yun.cn)
proxy = {
   
    'http': 'http://username:password@proxy.16yun.cn:8000',
    'https': 'https://username:password@proxy.16yun.cn:8000'
}

# 请求头配置,模拟浏览器访问
headers = {
   
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
    'Cookie': 'your_cookie_here'  # 设置为你实际从浏览器中获取的cookie
}

# 京东目标URL,搜索某一类商品,例如“手机”
url = 'https://search.jd.com/Search?keyword=手机&enc=utf-8'

# 发起HTTP请求,使用代理IP
response = requests.get(url, headers=headers, proxies=proxy)

# 检查请求是否成功
if response.status_code == 200:
    print("数据爬取成功!")
    # 解析HTML内容
    soup = BeautifulSoup(response.content, 'html.parser')
else:
    print(f"请求失败,状态码:{response.status_code}")

2.2 数据处理:采集商品名称和价格

通过爬虫抓取京东商品数据后,接下来我们需要提取商品的名称、价格等信息。京东页面通常包含商品的divli元素,这些元素内嵌商品的详细信息。

# 获取商品列表
product_list = soup.find_all('li', class_='gl-item')

# 初始化列表,用于存储商品信息
data = []

# 遍历商品列表,提取商品名称和价格
for product in product_list:
    # 商品名称
    name = product.find('div', class_='p-name').text.strip()

    # 商品价格(有些商品可能未显示价格,因此需做异常处理)
    try:
        price = product.find('div', class_='p-price').strong.i.text.strip()
    except AttributeError:
        price = '暂无价格'

    # 将商品信息存入data列表
    data.append([name, price])

# 使用pandas将数据转换为DataFrame
df = pd.DataFrame(data, columns=['商品名称', '价格'])

# 打印数据预览
print(df.head())

2.3 保存为CSV文件

在成功抓取和处理数据后,我们可以使用pandas将数据保存为CSV文件。为了便于管理,我们可以为文件名加入当前时间戳,确保每次生成的文件都是唯一的。

# 获取当前时间,生成文件名
current_time = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
file_name = f'jd_products_{current_time}.csv'

# 将DataFrame保存为CSV文件
df.to_csv(file_name, index=False, encoding='utf-8')

print(f"数据成功保存至 {file_name}")

2.4 代理IP的应用与优化

在电商平台抓取数据时,IP封禁是一个常见的问题。为确保爬虫的长期运行,使用代理IP能够避免同一IP地址因过于频繁的请求而被封禁。

在本文中,我们通过爬虫代理的配置将请求代理到不同的IP,这样可以有效减少因频繁请求导致的封禁风险。上面代码中proxy变量的配置就是使用代理的示例。

如果需要进一步优化,还可以考虑使用多线程或异步请求,提升爬取速度。下面是使用多线程并发爬取的示例:

from concurrent.futures import ThreadPoolExecutor

# 定义爬取函数
def fetch_product_data(url):
    response = requests.get(url, headers=headers, proxies=proxy)
    if response.status_code == 200:
        soup = BeautifulSoup(response.content, 'html.parser')
        product_list = soup.find_all('li', class_='gl-item')
        data = []
        for product in product_list:
            name = product.find('div', class_='p-name').text.strip()
            try:
                price = product.find('div', class_='p-price').strong.i.text.strip()
            except AttributeError:
                price = '暂无价格'
            data.append([name, price])
        return data
    else:
        return []

# 使用线程池并发爬取多个页面
urls = ['https://search.jd.com/Search?keyword=手机&page={}'.format(page) for page in range(1, 4)]

with ThreadPoolExecutor(max_workers=5) as executor:
    results = list(executor.map(fetch_product_data, urls))

# 合并结果并保存为CSV
all_data = [item for sublist in results for item in sublist]
df = pd.DataFrame(all_data, columns=['商品名称', '价格'])

# 保存为CSV文件
file_name = f'jd_products_{datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}.csv'
df.to_csv(file_name, index=False, encoding='utf-8')

print(f"所有商品数据成功保存至 {file_name}")

3. 总结

本文详细介绍了如何通过Python的pandasdatetime库实现京东商品数据的爬取与自动化保存。通过使用代理IP、设置合理的请求头和并发爬取技术,我们可以有效提高爬虫的效率和稳定性。最终,商品数据将被保存为带有时间戳的CSV文件,便于后续的数据分析和处理。

相关文章
|
8天前
|
存储 缓存 运维
阿里云先知安全沙龙(上海站)——后渗透阶段主机关键信息自动化狩猎的实现与应用
本文介绍了在后渗透测试中使用LSTAR工具和PowerShell脚本进行RDP状态查询、端口获取及凭据收集的过程,强调了高强度实战场景下的OPSEC需求。通过MITRE ATT&CK框架的应用,详细阐述了凭证访问、发现和收集等关键技术,确保攻击者能够隐蔽、持续且高效地渗透目标系统,最终获取核心数据或控制权。文中还展示了SharpHunter等工具的自动化实现,进一步提升了操作的安全性和效率。
|
6月前
|
数据采集 存储 API
在信息时代,Python爬虫用于自动化网络数据采集,提高效率。
【7月更文挑战第5天】在信息时代,Python爬虫用于自动化网络数据采集,提高效率。基本概念包括发送HTTP请求、解析HTML、存储数据及异常处理。常用库有requests(发送请求)和BeautifulSoup(解析HTML)。基本流程:导入库,发送GET请求,解析网页提取数据,存储结果,并处理异常。应用案例涉及抓取新闻、商品信息等。
110 2
|
5月前
|
数据采集 存储 监控
用爬虫技术玩转石墨文档:自动化数据处理与信息提取的新探索
在当今数字化时代,文档协作与管理成为了职场人士日常工作中不可或缺的一部分。石墨文档,作为一款功能强大的在线文档工具,凭借其云端存储、多人实时协作、丰富的文档格式支持等特点,赢得了广泛的用户群体。然而,随着数据量的激增,如何高效地管理和利用这些数据成为了一个亟待解决的问题。此时,爬虫技术便成为了我们玩转石墨文档、实现自动化数据处理与信息提取的强大工具。
|
5月前
|
XML JSON 监控
淘宝商品数据接口实战:自动化监控与竞品分析
淘宝开放平台提供的商品列表数据接口是一种API,使开发者能编程获取淘宝商品数据。主要功能包括按关键词、分类等获取商品列表及其详情,并支持分页、排序及多维度筛选。常见参数有关键词、页码、排序方式等。使用需注册账号获取API密钥,构建并发送HTTP请求,解析JSON/XML响应数据进行业务处理。此接口适用于商品监控、市场分析等多种场景。[体验API](http://u6v.cn/5W41Dx)
|
7月前
|
数据处理 索引 Python
Pandas的datetime数据类型(二)
Pandas的datetime数据处理涉及日期运算和Timedelta计算,如计算疫情爆发天数,获取日期的季度和年份。示例中展示如何从Ebola数据集重建疫情爆发第一天,以及如何对银行关闭日期分组统计。此外,演示了如何按日期筛选数据,设置日期为DataFrame索引,并使用`date_range`创建日期序列。还讨论了如何处理不连续日期,以及如何进行时间范围查询,包括在特定时间段内选择数据和按时间间隔过滤。最后,展示了如何高效地在时间序列上选取数据。
|
2月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
81 0
|
4月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
113 0
|
2月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
53 2
|
3月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
100 3
|
3月前
|
数据采集 数据挖掘 API
Python数据分析加速器:深度挖掘Pandas与NumPy的高级功能
在Python数据分析的世界里,Pandas和NumPy无疑是两颗璀璨的明星,它们为数据科学家和工程师提供了强大而灵活的工具集,用于处理、分析和探索数据。今天,我们将一起深入探索这两个库的高级功能,看看它们如何成为数据分析的加速器。
51 1