Python爬虫实战——使用NetNut网页解锁器获取亚马逊电商数据

文章目录

  • 一、电商数据的作用
    • 1.1 支撑科学决策,降低试错成本
    • 1.2 提升运营效率,实现降本增效
    • 1.3 深化用户理解,驱动个性化服务
    • 1.4 监测竞品动态,制定差异化策略
    • 1.5 驱动产品创新,满足用户需求
  • 二、爬取目标
  • 三、环境准备
  • 四、NetNut网页解锁器介绍
    • 4.1 特点
    • 4.2 免费申请
  • 五、使用网页解锁器实战
    • 5.1 导入模块
    • 5.2 发送请求获取网页源码
    • 5.3 解析数据
    • 5.4 保存数据
    • 5.5 完整源码
    • 5.6 结果展示
    • 六、总结

一、电商数据的作用

采集电商数据的意义在于通过系统化收集和分析运营中产生的各类信息,为企业提供决策依据、优化业务流程、提升竞争力。其核心作用可简要概括为以下方面:

1.1 支撑科学决策,降低试错成本

  • 市场洞察:通过采集行业趋势、竞品动态、用户需求等数据,帮助企业避开“拍脑袋”决策,制定符合市场规律的战略。
  • 定价优化:分析竞品价格、用户价格敏感度,动态调整定价策略,平衡销量与利润。

1.2 提升运营效率,实现降本增效

  • 供应链优化:基于销售预测和库存数据,实现“以销定产”,减少积压或缺货风险。
  • 物流优化:通过订单分布和配送路径数据,缩短配送时间,降低物流成本。

1.3 深化用户理解,驱动个性化服务

  • 用户画像构建:采集浏览、购买、评价等行为数据,精准定位用户需求,实现个性化推荐和精准营销。
  • 体验提升:分析用户反馈和客服数据,优化产品功能和服务流程,增强用户粘性。

1.4 监测竞品动态,制定差异化策略

  • 竞品分析:实时跟踪竞品价格、促销活动、营销策略,快速响应市场变化,避免同质化竞争。
  • 机会挖掘:通过竞品数据发现市场空白点,为产品创新或细分市场拓展提供方向。

1.5 驱动产品创新,满足用户需求

  • 反馈闭环:通过用户评价、退货原因等数据,发现产品痛点,指导产品迭代和功能优化。
  • C2M定制:基于用户需求数据反向定制产品,降低库存风险,提升市场响应速度。

二、爬取目标

本次的爬取目标是亚马逊电商网站中,苹果最新发布的AirPods Pro3商品信息,字段如下:商品标题、价格、品牌、颜色、耳部放置、外型规格、噪音控制、型号名称、连接技术、无线通信技术、随附部件、商品具体用途、产品的推荐用途、兼容的设备、控制类型、线缆特征、防水级别、控制方法、商品数量、控制器类型、UPC、特殊功能、制造商、包装尺寸、商品重量、ASIN、型号、电池、上架时间、箱内物品:

在这里插入图片描述

三、环境准备

Python:3.10

编辑器:PyCharm

第三方模块,自行安装:

pip install requests # 爬虫模块
pip install lxml # 解析网页模块
pip install pandas # 数据处理模块

四、NetNut网页解锁器介绍

4.1 特点

1、先进的反反爬虫技术:有效绕过网站实施的反抓取措施
2、自动轮换IP管理:根据网站复杂程度动态轮换IP地址
3、验证码解决能力:解决验证码,模仿真实用户行为
4、自定义 HTTP 标头管理:适应特定于站点的要求以提高抓取效率

在这里插入图片描述

4.2 免费申请

1、打开官网选择注册(Netnut代理IP):

在这里插入图片描述

2、注册登录好以后来到控制面板,切换语言为中文:

在这里插入图片描述

3、点击集成示例:

在这里插入图片描述

4、产品有五种可以供我们选择,这里我们用Web Unblocker(网页解锁器)进行测试:
Datacenter:数据中心IP
Residential:住宅IP
Static Residential:静态住宅IP
Mobile:移动IP
Web Unblocker:网页解锁器

在这里插入图片描述

5、一共有100多个国家代理地址可以供我们选择,可以满足各种跨国业务需求,真的太棒了:

在这里插入图片描述

6、选择Python代码进行复制,后续替换代码中的用户名和密码即可:

在这里插入图片描述

7、封装为一个函数方便调用,注意这里需要替换为你自己的NetNut代理用户名和密码:

def get_ip():proxies = {"http": "http://你的用户名:你的密码@unblocker.netnut.io:5959","https": "http://你的用户名:你的密码@unblocker.netnut.io:5959"}return proxies

五、使用网页解锁器实战

5.1 导入模块

import requests  # python基础爬虫库
from lxml import etree  # 可以将网页转换为Elements对象
import pandas as pd  # pandas,用于写入Excel文件

5.2 发送请求获取网页源码

(1)我们先来试试不使用网页解锁器发送请求:

def get_html_str(url):"""不使用网页解锁器"""headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.97 Safari/537.36 Core/1.116.559.400 QQBrowser/19.6.6683.400'}response = requests.get(url, headers=headers, verify=False)html_str = response.textprint(html_str)return html_str

可以看到返回的网页源码特别短,且没有我们需要的数据,这是因为亚马逊电商网站有反爬虫措施识别到了我们的爬虫代码:

在这里插入图片描述

(2)我们携带网页解锁器发送请求获取网页源码:

def get_html_str(url):headers = {'x-netnut-html-render': 'true'}# 使用网页解析器proxies = get_ip()response = requests.get(url, headers=headers,proxies=proxies, verify=False)  #html_str = response.textprint(html_str)return html_str

可以看到返回的网页源码特别长,并且可以搜到我们需要的数据,NetNut网页解锁器简直太强了,可以有效解决请求头检测、IP检测、验证码检测等,可以模仿真实用户行为进行访问:

在这里插入图片描述

5.3 解析数据

我们这里写一个get_data(html_str)函数,传入当前页的网页源码,然后用xpath解析数据:

def get_data(html_str):# 将html字符串转换为etree对象方便后面使用xpath进行解析html_data = etree.HTML(html_str)# 利用xpath取到所有的li标签# 标题title = html_data.xpath('//span[@id="productTitle"]/text()')[0].strip()# 价格price = html_data.xpath('//span[@class="a-price-whole"]/text()')[0].strip()price = '$' + price# 品牌Brand = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[1]/td[2]/span/text()')[0].strip()# 颜色Color = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[2]/td[2]/span/text()')[0].strip()# 耳部放置Ear_Placement = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[3]/td[2]/span/text()')[0].strip()# 外型规格Form_Factor = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[4]/td[2]/span/text()')[0].strip()# 噪音控制Noise_Control = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[5]/td[2]/span/text()')[0].strip()# 型号名称Model_Name = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[1]/td/text()')Model_Name = Model_Name[0].strip().replace('\u200e','')# 连接技术Connectivity_Technology = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[2]/td/text()')Connectivity_Technology = Connectivity_Technology[0].strip().replace('\u200e', '')# 无线通信技术Wireless_Communication_Technology = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[3]/td/text()')Wireless_Communication_Technology = Wireless_Communication_Technology[0].strip().replace('\u200e', '')# 随附部件Included_Components = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[4]/td/text()')Included_Components = Included_Components[0].strip().replace('\u200e', '')# 商品具体用途Specific_Uses_For_Product = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[5]/td/text()')Specific_Uses_For_Product = Specific_Uses_For_Product[0].strip().replace('\u200e', '')# 产品的推荐用途Recommended_Uses_For_Product = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[6]/td/text()')Recommended_Uses_For_Product = Recommended_Uses_For_Product[0].strip().replace('\u200e', '')# 兼容的设备Compatible_Devices = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[7]/td/text()')Compatible_Devices = Compatible_Devices[0].strip().replace('\u200e', '')# 控制类型Control_Type = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[8]/td/text()')Control_Type = Control_Type[0].strip().replace('\u200e', '')# 线缆特征Cable_Feature = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[9]/td/text()')Cable_Feature = Cable_Feature[0].strip().replace('\u200e', '')# 防水级别Water_Resistance_Level = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[10]/td/text()')Water_Resistance_Level = Water_Resistance_Level[0].strip().replace('\u200e', '')# 控制方法Control_Method = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[11]/td/text()')Control_Method = Control_Method[0].strip().replace('\u200e', '')# 商品数量Number_of_Items = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[12]/td/text()')Number_of_Items = Number_of_Items[0].strip().replace('\u200e', '')# 控制器类型Controller_Type = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[13]/td/text()')Controller_Type = Controller_Type[0].strip().replace('\u200e', '')# UPCUPC = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[14]/td/text()')UPC = UPC[0].strip().replace('\u200e', '')# 特殊功能Special_Feature = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[15]/td/text()')Special_Feature = Special_Feature[0].strip().replace('\u200e', '')# 制造商Manufacturer = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[16]/td/text()')Manufacturer = Manufacturer[0].strip().replace('\u200e', '')# 包装尺寸Package_Dimensions = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[17]/td/text()')Package_Dimensions = Package_Dimensions[0].strip().replace('\u200e', '')# 商品重量Item_Weight = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[18]/td/text()')Item_Weight = Item_Weight[0].strip().replace('\u200e', '')# ASINASIN = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[19]/td/text()')ASIN = ASIN[0].strip().replace('\u200e', '')# 型号Item_model_number = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[20]/td/text()')Item_model_number = Item_model_number[0].strip().replace('\u200e', '')# 电池Batteries = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[21]/td/text()')Batteries = Batteries[0].strip().replace('\u200e', '')# 上架时间Date_First_Available = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[22]/td/text()')Date_First_Available = Date_First_Available[0].strip().replace('\u200e', '')return {'商品标题':title,'价格':price,'品牌':Brand,'颜色':Color,'耳部放置':Ear_Placement,'外型规格':Form_Factor,'噪音控制':Noise_Control,'型号名称': Model_Name, '连接技术': Connectivity_Technology,'无线通信技术': Wireless_Communication_Technology, '随附部件': Included_Components,'商品具体用途': Specific_Uses_For_Product, '产品的推荐用途': Recommended_Uses_For_Product,'兼容的设备': Compatible_Devices,'控制类型': Control_Type, '线缆特征': Cable_Feature, '防水级别': Water_Resistance_Level,'控制方法': Control_Method, '商品数量': Number_of_Items,'控制器类型': Controller_Type, 'UPC': UPC, '特殊功能': Special_Feature, '制造商': Manufacturer,'包装尺寸': Package_Dimensions,'商品重量': Item_Weight, 'ASIN': ASIN, '型号': Item_model_number, '电池': Batteries,'上架时间': Date_First_Available}

5.4 保存数据

将获取到的数据写入Excel,当然如果你有数据库也可以写入数据库:

def save_excel(data):# 转换为适合DataFrame的格式formatted_data = [{'字段': key, '内容': value} for key, value in data.items()]# 创建DataFramedf = pd.DataFrame(formatted_data)# 写入exceldf.to_excel('电商数据.xlsx',index=False)

5.5 完整源码

注意:下面get_ip()函数,需要看4.2教程换成自己的NetNut代理的用户名和密码:

import requests  # python基础爬虫库
from lxml import etree  # 可以将网页转换为Elements对象
import pandas as pd  # pandas,用于写入Excel文件def get_ip():proxies = {"http": "http://你的用户名:你的密码@unblocker.netnut.io:5959","https": "http://你的用户名:你的密码@unblocker.netnut.io:5959"}return proxies# def get_html_str(url):
#     """不使用网页解锁器"""
#     headers = {
#         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.97 Safari/537.36 Core/1.116.559.400 QQBrowser/19.6.6683.400'
#     }
#     response = requests.get(url, headers=headers, verify=False)
#     html_str = response.text
#     print(html_str)
#     return html_strdef get_html_str(url):"""使用网页解锁器"""headers = {'x-netnut-html-render': 'true'}# 使用网页解析器proxies = get_ip()response = requests.get(url, headers=headers, proxies=proxies, verify=False)html_str = response.textprint(html_str)return html_strdef get_data(html_str):# 将html字符串转换为etree对象方便后面使用xpath进行解析html_data = etree.HTML(html_str)# 利用xpath取到所有的li标签# 标题title = html_data.xpath('//span[@id="productTitle"]/text()')[0].strip()# 价格price = html_data.xpath('//span[@class="a-price-whole"]/text()')[0].strip()price = '$' + price# 品牌Brand = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[1]/td[2]/span/text()')[0].strip()# 颜色Color = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[2]/td[2]/span/text()')[0].strip()# 耳部放置Ear_Placement = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[3]/td[2]/span/text()')[0].strip()# 外型规格Form_Factor = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[4]/td[2]/span/text()')[0].strip()# 噪音控制Noise_Control = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[5]/td[2]/span/text()')[0].strip()# 型号名称Model_Name = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[1]/td/text()')Model_Name = Model_Name[0].strip().replace('\u200e','')# 连接技术Connectivity_Technology = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[2]/td/text()')Connectivity_Technology = Connectivity_Technology[0].strip().replace('\u200e', '')# 无线通信技术Wireless_Communication_Technology = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[3]/td/text()')Wireless_Communication_Technology = Wireless_Communication_Technology[0].strip().replace('\u200e', '')# 随附部件Included_Components = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[4]/td/text()')Included_Components = Included_Components[0].strip().replace('\u200e', '')# 商品具体用途Specific_Uses_For_Product = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[5]/td/text()')Specific_Uses_For_Product = Specific_Uses_For_Product[0].strip().replace('\u200e', '')# 产品的推荐用途Recommended_Uses_For_Product = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[6]/td/text()')Recommended_Uses_For_Product = Recommended_Uses_For_Product[0].strip().replace('\u200e', '')# 兼容的设备Compatible_Devices = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[7]/td/text()')Compatible_Devices = Compatible_Devices[0].strip().replace('\u200e', '')# 控制类型Control_Type = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[8]/td/text()')Control_Type = Control_Type[0].strip().replace('\u200e', '')# 线缆特征Cable_Feature = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[9]/td/text()')Cable_Feature = Cable_Feature[0].strip().replace('\u200e', '')# 防水级别Water_Resistance_Level = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[10]/td/text()')Water_Resistance_Level = Water_Resistance_Level[0].strip().replace('\u200e', '')# 控制方法Control_Method = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[11]/td/text()')Control_Method = Control_Method[0].strip().replace('\u200e', '')# 商品数量Number_of_Items = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[12]/td/text()')Number_of_Items = Number_of_Items[0].strip().replace('\u200e', '')# 控制器类型Controller_Type = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[13]/td/text()')Controller_Type = Controller_Type[0].strip().replace('\u200e', '')# UPCUPC = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[14]/td/text()')UPC = UPC[0].strip().replace('\u200e', '')# 特殊功能Special_Feature = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[15]/td/text()')Special_Feature = Special_Feature[0].strip().replace('\u200e', '')# 制造商Manufacturer = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[16]/td/text()')Manufacturer = Manufacturer[0].strip().replace('\u200e', '')# 包装尺寸Package_Dimensions = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[17]/td/text()')Package_Dimensions = Package_Dimensions[0].strip().replace('\u200e', '')# 商品重量Item_Weight = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[18]/td/text()')Item_Weight = Item_Weight[0].strip().replace('\u200e', '')# ASINASIN = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[19]/td/text()')ASIN = ASIN[0].strip().replace('\u200e', '')# 型号Item_model_number = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[20]/td/text()')Item_model_number = Item_model_number[0].strip().replace('\u200e', '')# 电池Batteries = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[21]/td/text()')Batteries = Batteries[0].strip().replace('\u200e', '')# 上架时间Date_First_Available = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[22]/td/text()')Date_First_Available = Date_First_Available[0].strip().replace('\u200e', '')return {'商品标题':title,'价格':price,'品牌':Brand,'颜色':Color,'耳部放置':Ear_Placement,'外型规格':Form_Factor,'噪音控制':Noise_Control,'型号名称': Model_Name, '连接技术': Connectivity_Technology,'无线通信技术': Wireless_Communication_Technology, '随附部件': Included_Components,'商品具体用途': Specific_Uses_For_Product, '产品的推荐用途': Recommended_Uses_For_Product,'兼容的设备': Compatible_Devices,'控制类型': Control_Type, '线缆特征': Cable_Feature, '防水级别': Water_Resistance_Level,'控制方法': Control_Method, '商品数量': Number_of_Items,'控制器类型': Controller_Type, 'UPC': UPC, '特殊功能': Special_Feature, '制造商': Manufacturer,'包装尺寸': Package_Dimensions,'商品重量': Item_Weight, 'ASIN': ASIN, '型号': Item_model_number, '电池': Batteries,'上架时间': Date_First_Available}def save_excel(data):# 转换为适合DataFrame的格式formatted_data = [{'字段': key, '内容': value} for key, value in data.items()]# 创建DataFramedf = pd.DataFrame(formatted_data)# 写入exceldf.to_excel('电商数据.xlsx',index=False)if __name__ == '__main__':url = 'https://www.amazon.com/gp/aw/d/B0FQFB8FMG/?_encoding=UTF8&pd_rd_plhdr=t&aaxitk=2c961813ca337245359ad083c19b8f5f&hsa_cr_id=0&qid=1757486466&sr=1-1-9e67e56a-6f64-441f-a281-df67fc737124&ref_=sbx_be_s_sparkle_lsi4d_asin_0_img&pd_rd_w=AqboJ&content-id=amzn1.sym.9f2b2b9e-47e9-4764-a4dc-2be2f6fca36d%3Aamzn1.sym.9f2b2b9e-47e9-4764-a4dc-2be2f6fca36d&pf_rd_p=9f2b2b9e-47e9-4764-a4dc-2be2f6fca36d&pf_rd_r=6HKX09G15YB6TRQAMP8J&pd_rd_wg=MziL3&pd_rd_r=2ee0b16d-b4ad-422e-a768-b3e26a6d8724'# 一、发送请求,获取网页源码html_str = get_html_str(url)# 二、解析数据data = get_data(html_str)# 三、保存数据save_excel(data)

5.6 结果展示

使用NetNut网页解锁器轻松获取到数据,并且在当前路径下生成Excel文件:

在这里插入图片描述

六、总结

代理对于爬虫是密不可分的,但使用代理需要遵守相关法律法规和目标网站的使用规则。NetNut代理覆盖全球195个国家,8500万优质IP,全方位满足网页数据抓取。提供四种代理IP服务:动态住宅,静态ISP,移动代理,数据中心代理,凭借网页解锁器的强大功能可以采集各种场景的数据,并且现在在做国庆促销有需要的小伙伴们可以试试:Netnut代理IP

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

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

相关文章

超越NAT:如何构建高效、安全的内网穿透隧道

在敏捷开发和分布式协作成为主流的今天,开发者需要一个能够将本地开发环境瞬间暴露给公网的能力,以便进行演示、联调或处理回调。传统方案如配置路由器端口映射或部署VPN,不仅繁琐且存在安全风险。内网穿透技术,特别是以 ngrok、Z…

第二十三章 ESP32S3 RTC 实验

本章介绍 ESP32-S3 实时时钟(RTC)的使用,实时时钟能为系统提供一个准确的时间,即时系统复位或主电源断电, RTC 依然能够运行,因此 RTC 也经常用于各种低功耗场景。通过本章的学习,将学习到 RTC …

Java 轻松实现 Markdown 转 Word、PDF、HTML

在软件开发和技术写作领域,Markdown 已成为一种被广泛使用的轻量级标记语言。它的语法简洁,书写效率高,非常适合快速记录笔记、撰写技术文档或博客文章。但在实际应用中,Markdown 文件往往需要被转换为更通用的格式,例…

Kafka系列之:Kafka broker does not support the ‘MetadataRequest_v0‘ Kafka protocol.

Kafka系列之:Kafka broker does not support the MetadataRequest_v0 Kafka protocol. 一、完整报错 二、错误原因 三、解决方法 一、完整报错 kafka.errors.IncompatibleBrokerVersion: IncompatibleBrokerVersion: Kafka broker does not support the ‘MetadataRequest_v0’…

开源AI红队工具“Red AI Range“助力发现、分析与缓解AI系统漏洞

开源AI红队平台Red AI Range(RAR)正在改变安全专业人员评估和强化AI系统的方式。该平台通过模拟真实攻击场景,利用容器化架构和自动化工具,简化了AI特有漏洞的发现、分析和缓解流程。**核心功能** 1. 武器库/目标按钮可快速启动…

SQL 数据库简介

SQL(Structured Query Language)是一种用于管理和操作关系型数据库的标准语言。关系型数据库以表格形式存储数据,并通过行和列的结构化方式组织信息。SQL 提供了一套强大的命令,用于查询、插入、更新和删除数据,以及管…

SpringBoot4与Spring7发布:云原生深度进化

Spring Boot 4和Spring Framework 7带来基础要求升级、模块化改进、API版本化、声明式HTTP客户端、弹性注解等重大特性,标志着Java开发生态向云原生时代的深度进化。 近日,Spring生态迎来了自2022年以来最具里程碑意义的更新——Spring Boot 4和Spring …

基于Spring Boot与Micrometer的系统参数监控指南

如何为你的Spring Boot应用装上一个功能强大的监控仪表盘在现代微服务架构中,系统监控已成为保障应用稳定性的关键环节。通过有效的监控,我们可以实时了解应用的运行状态,及时发现并解决性能问题。本文将介绍如何使用Micrometer及其注册表&am…

【运维】-- 前端会话回放与产品分析平台之 openreplay

目录 OpenReplay 项目分析 1、项目概览 2、关键特性 3、代码结构(Monorepo) 4、技术栈与语言占比 5、部署与交付 6、社区与支持 7、版本与活跃度(截至仓库页面所示) 8、适用场景 9、优势与注意事项 10、落地建议&#…

NineData社区版 V4.5.0 正式发布!运维中心新增细粒度任务权限管理,新增MySQL至Greenplum全链路复制对比

NineData 社区版 V4.5.0 正式发布!在数据复制方面,新增 MySQL 至 Greenplum 全链路复制对比,并优化全局 DDL 管控、MySQL/PostgreSQL/MongoDB 同构性能。在数据库 DevOps 方面,新增支持 AWS RDS 全系列及阿里云 PolarDB&#xff0…

discuz所有下载版本和升级工具

下载版本: Discuz! 每日构建版下载 - DiscuzX 3.x Daily Build Download Site SC是简体中文 TC是繁体中文 可能你需要其他版本: Discuz!官方网站 - 开放、连接、共赢 下载简体中文就好。 升级工具: 升级程序下载地址 https://gitee.com/oldhuhu/DiscuzX34235.git(…

【开题答辩全过程】以 “红色枣庄”旅游网站为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

【LeetCode】2785. 将字符串中的元音字母排序

题目描述 题目链接 问题分析 这道体的思路非常简单和好理解,找出字符串中的元音字符,然后按照ASSIC值进行排序,然后插入回对应的位置,解题步骤为: 使用一个set(可以快速查找的容器)&#x…

3 步发 10 亿邮件,这个 GitHub 开源项目牛逼。

你是否要经常批量发邮件?无论是向客户推送最新资讯、产品营销,还是发送日常常规通知类邮件。使用第三方邮件服务平台不仅成本高昂,功能限制多,而且可能无法保证隐私和安全。现在,有一个完全开源、能自己部署的解决方案…

【计算机网络】DNS 解析 DNS 污染

1. DNS 解析(工作流程、参与方与缓存) DNS 的目标:把人类可读的域名(如 www.example.com)映射为 IP 地址(如 93.184.216.34)。 典型解析流程(递归解析器 迭代查询)&…

用住宿楼模型彻底理解Kubernetes架构(运行原理视角)

导读:从楼宇建设到租客入住的全流程想象我们正在建设一栋巨型智能住宿楼,从基础设施搭建到租客入住管理,每个环节都对应Kubernetes的组件和概念。本文将按运行原理的先后顺序,系统解析Kubernetes的23个核心组件与基本概念。把 Kub…

嘉银科技基于阿里云 Kafka Serverless 提升业务弹性能力,节省成本超过 20%

作者:四牛 前言 云消息队列 Kafka 版 Serverless 系列凭借其秒级弹性扩展、按需付费、轻运维的优势,助力嘉银科技业务系统实现灵活扩缩容,在业务效率和成本优化上持续取得突破,保证服务的敏捷性和稳定性,并节省超过 20…

RTOS 任务状态与调度机制详解

一、任务状态概述在实时操作系统(RTOS)中,任务通常具有以下几种基本状态:Running(运行态):任务正在 CPU 上实际执行。单核系统中同一时刻最多只有一个任务处于运行态。Ready(就绪态&…

TDengine 特殊选择函数 UNIQUE 用户手册

UNIQUE 函数用户手册 函数定义 UNIQUE(expr)功能说明 UNIQUE() 函数返回指定列去重后的值,功能类似于 SQL 中的 DISTINCT 关键字。对于相同的数据值,UNIQUE 函数会返回时间戳最小的那一条记录。该函数会跳过 NULL 值。 版本要求 最低版本: v3.0.0.0…

新零售第一阶段传统零售商的困境突破与二次增长路径:基于定制开发开源AI智能名片S2B2C商城小程序的实践探索

摘要:新零售第一阶段,传统零售商面临同质化竞争、用户消费意愿低迷、线上电商分流等核心困境。本文以定制开发开源AI智能名片S2B2C商城小程序为切入点,结合阿里巴巴、某知名连锁零售企业等实践案例,分析其通过“AI智能推荐供应链协…