首页 > 编程语言 >Python爬取某电商平台商品数据及评论!

Python爬取某电商平台商品数据及评论!

时间:2023-11-30 13:00:55浏览次数:40  
标签:Python text 爬取 headers ip requests 电商 select

前言

随着互联网的发展,电商平台的出现让我们的消费更加便利,消费者可以在家里轻松地购买到各种商品。但有时候我们需要大量的商品数据进行分析,或者需要了解其他消费者的评价,这时候我们可以通过爬虫来获取数据。本文将介绍如何使用Python爬取某电商平台的商品数据及评论,并且用到代理ip来实现爬虫的稳定运行。

Python爬取某电商平台商品数据及评论!_html

主要内容

本文的主要内容分为以下几部分:

  1. 爬取商品列表数据
  2. 爬取单个商品页面的数据
  3. 爬取评论数据
  4. 使用代理ip
  5. 爬取商品列表数据

我们首先需要爬取商品列表数据,包括商品名称、价格、评分、销量等信息。以某电商平台为例,我们可以使用requests和BeautifulSoup库来实现:

import requests
from bs4 import BeautifulSoup

# 定义请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36',
    'Referer': 'https://www.xxx.com/'
}

# 定义请求参数
params = {
    'keyword': '手机',  # 商品名称
    'sort': 's',        # 排序方式,s为综合排序,p为销量排序
    'pageNum': '1'      # 页码
}

# 发送请求
url = 'https://search.xxx.com/search'
response = requests.get(url, params=params, headers=headers)

# 解析html
soup = BeautifulSoup(response.text, 'html.parser')

# 获取商品列表
items = soup.select('.gl-item')
for item in items:
    # 商品名称
    title = item.select('.p-name em')[0].text.strip()
    # 商品价格
    price = item.select('.p-price i')[0].text.strip()
    # 商品评分
    score = item.select('.p-commit strong')[0].text.strip()
    # 商品销量
    sales = item.select('.p-commit a')[0].text.strip()
    
    print(title, price, score, sales)

以上代码中,我们通过requests发送请求,使用BeautifulSoup解析html,然后获取商品列表信息。通过分析html代码,我们可以发现商品列表信息在class为“gl-item”的标签中,因此可以使用select方法来获取。

  1. 爬取单个商品页面的数据

接下来,我们需要爬取单个商品页面的数据,包括商品名称、价格、评分、评论数、详情等信息。同样使用requests和BeautifulSoup库来实现:

import requests
from bs4 import BeautifulSoup

# 定义请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36',
    'Referer': 'https://www.xxx.com/'
}

# 定义请求地址
url = 'https://item.xxx.com/123456.html'

# 发送请求
response = requests.get(url, headers=headers)

# 解析html
soup = BeautifulSoup(response.text, 'html.parser')

# 商品名称
title = soup.select('#itemDisplayName')[0].text.strip()
# 商品价格
price = soup.select('#breakprice em')[0].text.strip()
# 商品评分
score = soup.select('.J_commentTotal')[0].text.strip()
# 评论数
comment_count = soup.select('.J_commentTotal')[0].text.strip()
# 商品详情
detail = soup.select('.J-detail-content')[0].text.strip()

print(title, price, score, comment_count, detail)

以上代码中,我们通过requests发送请求,使用BeautifulSoup解析html,然后获取单个商品页面的信息。通过分析html代码,我们可以发现需要的信息在不同的标签中,需要根据实际情况进行选择。

  1. 爬取评论数据

评论数据是非常重要的,我们需要获取其他消费者对商品的评价,以此来了解商品的优缺点。以某电商平台为例,我们可以使用requests和json库来实现:

import requests
import json

# 定义请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36',
    'Referer': 'https://www.xxx.com/'
}

# 定义请求地址及参数
url = 'https://club.jd.com/comment/productPageComments.action'
params = {
    'productId': '123456',       # 商品id
    'score': '0',                # 评分,0为全部评价,1为好评,2为中评,3为差评
    'sortType': '5',             # 排序方式,5为按时间排序,6为按热度排序
    'pageNumber': '1',           # 页码
    'pageSize': '10',            # 每页显示数量
    'isShadowSku': '0',          # 是否为非主流商品
    'callback': 'fetchJSON_comment98vv123456'  # 固定值
}

# 发送请求
response = requests.get(url, params=params, headers=headers)

# 解析json
data = json.loads(response.text.lstrip('fetchJSON_comment98vv123456(').rstrip(');'))

# 获取评论列表
comments = data['comments']
for comment in comments:
    # 评论内容
    content = comment['content'].strip()
    # 评分
    score = comment['score']
    # 评论时间
    time = comment['creationTime']
    # 评论者
    nickname = comment['nickname']
    
    print(content, score, time, nickname)

以上代码中,我们通过requests发送请求,使用json.loads解析json,然后获取评论列表信息。通过分析json数据,我们可以找到需要的信息在哪些字段中,并且选择对应的字段即可。

  1. 使用代理ip

在爬虫过程中,我们可能会遇到被封ip的情况,为了避免这种情况的发生,我们可以使用代理ip来实现爬虫的稳定运行。以某代理ip网站为例,我们可以使用requests和随机选择代理ip的方式来爬取数据:

import requests

# 定义请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36',
    'Referer': 'https://www.xxx.com/'
}

# 定义请求地址
url = 'http://www.xxx.com/'

# 获取代理ip列表
proxy_list = [
    'http://123.45.67.89:8888',
    'http://123.45.67.90:8888',
    'http://123.45.67.91:8888'
]

# 随机选择代理ip
proxy = {
    'http': random.choice(proxy_list)
}

# 发送请求
response = requests.get(url, headers=headers, proxies=proxy)

以上代码中,我们定义了一个代理ip列表,然后随机选择一个代理ip来发送请求。这样就可以防止ip被封的情况发生。

总结

通过Python爬取电商平台的商品数据及评论,可以方便地获取到商品的基本信息、价格、评分、评论内容等信息,并进行数据分析和挖掘。在实现过程中需要注意反爬虫机制和页面的动态加载,可以使用代理ip和模拟浏览器发送请求来解决。同时,需要遵守网站的抓取规则和不侵犯用户隐私的原则。

标签:Python,text,爬取,headers,ip,requests,电商,select
From: https://blog.51cto.com/u_16022798/8628480

相关文章

  • Python学习之十二_tkinter的学习与使用
    Python学习之十二_tkinter的学习与使用摘要本来想说会用QT5进行界面编程但是发现比较繁琐还是先学习使用tkinter的方式进行界面化的编写和学习了基础知识tkinter是一个源码开放的图形用户接口开发工具,具备跨平台的特性Python默认的GUI开发模块是tkinter(在Python3以前的版本中......
  • Python中导入包和模块
    一、模块含义在前面的几个章节中我们基本上是用python解释器来编程,如果你从Python解释器退出再进入,那么你定义的所有的方法和变量就都消失了。为此Python提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。模块是一个包含所......
  • [python] 基于Tablib库处理表格数据
    Tablib是一个用于处理电子表格(如Excel,CSV,JSON)的Python库。它提供了一种简单而强大的方式来操作和处理数据。利用Tablib,我们可以轻松地读取、写入、过滤和转换各种类型的电子表格数据。Tablib具有一致且易于使用的API,以在不同的数据格式之间进行无缝转换。比如,Tablib可以将数据......
  • Python中命名空间及作用域
    一、命名空间命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是通过Python字典来实现的。命名空间提供了在项目中避免名字冲突的一种方法。各个命名空间是独立的,没有任何关系的,所以一个命名空间中不能有重名,但不同的命名空间是可以重名而没有任何影响。我们举一......
  • Python——第四章:内置函数(下)
    内置函数的使用方法:zip:可以把多个可迭代内容进行合并sorted:排序filter:筛选map:映射zip我们想把每个列表的第1位、第2位、第3位打包放在一起,手写的操作方法如下:#012lst1=["赵本山","范伟",'苏有朋']lst2=[40,38,42]lst3=["卖......
  • python的cv2模块使用
    一.安装CV2(opencv)模块pipinstallopencv-python二.使用imread读取图片使用函数cv2.imread(filepath,flags)读入一副图片filepath:要读入图片的完整路径flags:读入图片的标志cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道。alpha通道代表透明度效果,取值......
  • 基于Python的BlackJack游戏项目设计与实现——LW
    本篇论文介绍了基于Python的Blackjack游戏的设计和实现。该游戏是一款经典的赌博游戏,玩家可以在游戏中与电脑进行对战。在系统设计方面,本文首先对需求进行了分析,并采用了面向对象的方法进行了系统的设计。在客户端模块设计中,使用了Pygame库进行图形界面的实现,同时采用了多线程技术......
  • Python——第四章:匿名函数
    匿名函数:lambda表达式语法:变量=lambda参数,参数2,参数3....:返回值标准函数的调用deffunc():print(123456)return9999ret=func()print(ret) ......
  • 跨境电商CRM必备:提升运营效率,实现持续盈利
    跨境电商企业日常工作中需要用到很多应用例如建独立站、邮件营销、财务管理,其中CRM系统更是客户管理的核心。无论是获客、管理客户资料、维护客户关系、数据分析都要在应用上完成。今天我们就来说一说跨境电商CRM系统有哪些功能?1.AI人工智能助手业内主流跨境电商CRM系统已经落......
  • Python | 将本地文件上传到远程服务器
    在Python中,可以使用paramiko库来通过SSH进行文件的传输。首先,你需要安装paramiko库,可以使用以下命令进行安装:pipinstallparamiko然后,你可以使用以下Python脚本进行文件传输:此脚本使用SFTP协议进行文件传输。在SFTP的上下文中,你可以使用put方法将本地文件上传到远程服务器。import......