【爬虫实战】利用代理爬取电商数据

文章目录

  • 前言
  • 工具介绍
  • 实战获取网站数据
    • 编写代码
    • 数据展示
  • 推荐
  • 总结

前言

当今电商平台正经历着快速的转型与升级。随着技术的进步和用户需求的多样化,电商不仅从简单的在线购物演变为综合性的购物生态系统,还融合了人工智能、大数据和云计算等先进技术。平台通过精准的用户数据分析,提供个性化的购物体验,优化了商品推荐和服务,显著提升了用户满意度和忠诚度。

在这里插入图片描述

在这一过程中,爬虫技术扮演了至关重要的角色。通过自动化的数据抓取,爬虫可以高效地收集竞争对手的产品信息、价格变动和市场趋势,为商家提供宝贵的市场洞察。它不仅帮助商家进行实时的价格调整和库存优化,还支持更精确的市场分析和风险预警,使电商平台在竞争激烈的环境中保持领先地位。

工具介绍

工欲善其事必先利其器。今天给大家推荐的是Proxy302,它是一个专业的全球代理IP采购平台,提供按需付费的充值方式、最全面的代理类型以及简洁高效的用户界面。我们来展开描述下他的特色。

在这里插入图片描述

  • 按需付费,无月付套餐:无需套餐捆绑购买,按需付费,充值即可使用所有类型的代理IP,无阶梯式定价。
  • 最全面代理类型:Proxy302提供市面上最全面的代理类型,满足各种业务需求。
    • 全球240+国家和地区,6500万个住宅IP可供选择。
    • Proxy302支持HTTP、SOCKS5网络协议的代理。
    • Proxy302支持动态、静态代理,代理类型分为【动态按流量扣费】【动态按IP扣费】【静态按流量扣费】【静态按IP扣费】,静态代理还分为住宅IP数据中心IP
  • 简洁易用:用户界面简洁而不简单,易用且高效。提供浏览器扩展插件,实现一键设置代理,省去复杂配置步骤。

在这里插入图片描述

福利:点击右上角的调查问卷即可马上获取$1测试额度。

实战获取网站数据

这次我们要抓取的是某个知名的购书网站,内容包括:标题、链接、价格和图片链接。为了避免被检测为爬虫,我们首先需要获取登录用户的cookie。登录后,按下F12键,进入“网络”选项,选择任意一个流量记录,在请求头中找到cookie并复制下来。

在这里插入图片描述

然后,我们需要分析一下搜索框搜索“华为手机”之后的请求路径。可以从下图中看到,我们点击搜索之后,请求URL为https://search.dangdang.com/?key=%BB%AA%CE%AA%CA%D6%BB%FA&act=input&page_index=1,其中key为“华为手机”的转码,act为动作,page_index代表当前页是第一页。

在这里插入图片描述

接着我们需要确认商品元素在页面中的结构。可以观察到,所有商品都位于一个<ul>标签中,每个商品对应一个<li>标签,并且都有相应的class标记。

具体来说,标题位于<p>标签的title属性中,链接在<a>标签的href属性里,图片链接位于下层的<img>标签中,价格则位于另一个<p>标签中。接下来,我们将使用XPath来定位这些标签。

在这里插入图片描述
首先我们打开【帮助中心】

在这里插入图片描述

点击【快速入门】下的【查看更多】按钮

在这里插入图片描述

我们可以看到【非海外环境如何使用代理?】的标题,通过该内容我们了解到有4种实现海外环境的方式。此处阿Q选择使用VPN的方式进行,简单有效。

选择【静态IP】下的【按IP扣费】选项,选择【购买天数】和【国家】之后点击【生成】按钮即可获取到静态住宅IP。

在这里插入图片描述

出现下图即表示获取静态IP成功。

在这里插入图片描述

编写代码

拿到静态ip之后我们需要定义 get_html_str 函数,来向电商网站发送搜索请求:先定义请求头,模拟浏览器访问,其中包含了一些cookie信息。然后配置我们的代理信息,包含我们拿到的静态代理IP。最后发送HTTP请求到指定的URL,并返回网页源码。

# 发送请求,获取网页源码
def get_html_str(url):# 请求头模拟浏览器(注意这里一定添加自己已经登录的cookie才可以)headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36','cookie': ''}# 添加代理IP,此处是我们刚拿到的静态代理ipproxies = "";# proxies = {}# 添加请求头和代理IP发送请求response = requests.get(url, headers=headers, proxies=proxies)# 获取网页源码html_str = response.text# 返回网页源码return html_str

接着我们定义 get_data 函数,来解析网页中的元素,找到目标文本:首先接收网页源码、页码和数据列表作为参数。然后使用lxml.etree解析网页源码,提取商品信息,包括标题、价格、商品链接和图片链接。最后将提取的数据添加到数据列表中。

# 提取数据写入列表
def get_data(html_str, page, data_list):# 将html字符串转换为etree对象方便后面使用xpath进行解析html_data = etree.HTML(html_str)# 利用xpath取到所有的li标签li_list = html_data.xpath('//div[@dd_name="普通商品区域"]/ul/li')# 遍历li_list列表取到某一个商品的对象标签for li in li_list:# 标题title = li.xpath('.//a[@class="pic"]/@title')title = ''.join(title)# 商品链接goods_url = 'https:' + li.xpath('.//a[@class="pic"]/@href')[0]# 价格price = li.xpath('.//p[@class="price"]/span[@class="price_n"]/text()')[0]print(price)# 图片链接img_url = 'https:' + li.xpath('.//a[@class="pic"]/img/@src')[0]print({'页码': page, '标题': title, '价格': price, '商品链接': goods_url,'图片链接': img_url})data_list.append({'页码': page, '标题': title, '价格': price, '商品链接': goods_url,'图片链接': img_url})

接下来定义 to_excel 函数,将获取到的结果保存为excel文件:首先将数据列表转换为pandas的DataFrame对象。然后删除DataFrame中的重复数据。最后将DataFrame保存为Excel文件。

# 写入Excel
def to_excel(data_list):df = pd.DataFrame(data_list)df.drop_duplicates()  # 删除重复数据df.to_excel('当当采集数据集.xlsx')

最后定义一个main函数方便调节参数、控制流程:首先设置爬取的关键词和页数。然后初始化一个空的数据列表。之后循环遍历每一页,调用get_html_str和get_data函数获取数据。最后调用to_excel函数将数据写入Excel文件。

def main():# 1. 设置爬取的关键词和页数keyword = '华为手机'page_num = 1  # 爬取的页数data_list = []  # 空列表用于存储数据for page in range(1, page_num + 1):url = f'https://search.dangdang.com/?key={keyword}&act=input&page_index={page}'print(url)# 2. 获取指定页的网页源码html_str = get_html_str(url)# 3. 提取数据get_data(html_str, page, data_list)time.sleep(1)# 4. 写入Excelto_excel(data_list)

数据展示

以下是我们采集到的华为手机数据

在这里插入图片描述

推荐

值得注意的是Proxy302与302.AI是同一个开发团队,302.AI是一个汇集全球顶级品牌的AI超市,按需付费,无月费,全面开放使用各种类型AI。大家有需要可以自行体验!

总结

通过上面的实战,我们可以看到代理服务可以大大提高爬虫的匿名性和效率。Proxy302的代理可以满足这两点需求。

对开发者而言,Proxy302代理以其简单易用的特性,大幅降低了技术门槛。 开发者可以快速上手,无需深入了解代理服务的底层技术细节,即可实现高效的数据抓取。这不仅加快了开发进程,也使得开发者能够将更多精力投入到数据分析和业务逻辑的构建上。

Proxy302以其多维度的优势,为电商平台爬虫的实现提供了强有力的支持。无论是技术实现的便捷性,还是成本控制的灵活性,或是数据质量的高效性,以及整体操作的安全性,亮数据代理都是企业和个人在数据采集领域的理想选择。随着技术的不断进步和市场需求的日益增长,我们可以预见,代理服务将在电商数据采集领域扮演越来越重要的角色。

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

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

相关文章

zdppy+vue3+onllyoffice开发文档管理系统项目实战 20240808 上课笔记

遗留的问题 1、实现删除的功能 2、分享的功能暂时往后放&#xff0c;因为目前没有用户&#xff0c;等有了用户之后再考虑做 3、增加新建和导入按钮 zdppy的学习计划 机器学习平台&#xff0c;QQ音乐的开源项目&#xff0c;https://github.com/tencentmusic/cube-studio&#…

手表运动报告生成以及手机展示

一.运动报告组成部分 一般一份运动健康的报告包括以下信息&#xff1a; 1.运动轨迹区。2.报告数据区。(运动总体概览&#xff0c;如距离&#xff0c;时长&#xff0c;训练表现等)3.曲线图表区。(心率曲线&#xff0c;海拔曲线&#xff0c;速度&#xff0c;配速曲线) 二.组成部…

3.OpenFeign与负载均衡

文章目录 什么是 OpenFegin0penFeign 与 Ribbon.对 consumer 的改造超时配置请求响应的压缩设置选择远程调用的底层实现技术OpenFegin 整合 LoadBalancer 负载均衡负载均衡策略的更换小结 前面消费者对于微服务的消费是通过 RestTemplate 完成的,这种方式的弊端是很明显的:消费…

Qt实现圆形窗口

重新实现paintEvent()函数。 效果如下&#xff1a; 效果为蓝色区域&#xff0c;背景是vs接面&#xff0c;代码直接复制可用&#xff0c;留给有需要的人。 #ifndef CircleWidget_h__ #define CircleWidget_h__#include <QWidget>class CCircleWidget : public QWidget {Q…

学习vue3 三,组件基础,父子组件传值

组件基础 每一个.vue 文件都可以充当组件来使用 每一个组件都可以复用 父组件引入之后可以直接当标签使用 案例&#xff1a; App.vue <script setup lang"ts"> import BaseRefAndReactive from "./components/BaseRefAndReactive.vue";</sc…

MySQL——数据表的基本操作(二)查看数据表

使用 SQL 语句创建好数据表后,可以通过查看数据表结构的定义,以确认数据表的定义是否正确。在 MySQL中,查看数据表的方式有两种,具体如下。 1、使用 SHOW CREATE TABLE 查看数据表 在 MySQL 中,SHOW CREATE TABLE语句不仅可以查看创建表时的定义语句还可以查看表的字符编码。S…

PLL基本原理、设计及应用

PLL基本原理 锁相环&#xff08;Phase-Locked Loop, PLL&#xff09;是一种基本的反馈控制系统&#xff0c;广泛应用于电子通信、信号处理、时钟同步等多个领域。PLL通过反馈机制锁定输入信号的频率和相位&#xff0c;从而实现输出信号与输入信号的同步。其基本工作原理可以概…

使用AI绘图工具生成风景图像的教程

随着人工智能技术的飞速发展&#xff0c;AI绘图工具在图像生成和艺术创作方面变得越来越强大&#xff0c;无论你是一个设计师、艺术家&#xff0c;还是仅仅对生成艺术感兴趣的爱好者&#xff0c;AI绘图工具都可以帮助你轻松地创作出惊艳的风景图像。 在这篇教程中&#xff0c;…

顶顶通手机助手拦截方案

现在很多品牌的手机&#xff0c;都自带语音助手&#xff0c;比如我用的是小米手机&#xff0c;就自带小爱助手&#xff0c;可以自动接听各种广告营销电话。如果来电号码被标记为广告营销&#xff0c;小爱助手就会自动应答&#xff0c;然后模拟真人进行对话。 现在自动外呼系统拨…

RPC通信的简单流程

远程调用者假设需要调用Login方法&#xff0c;将调用的信息通过muduo库&#xff0c;同时进行了序列化和反序列化&#xff0c;发送到Rpcprovider上&#xff0c;RpcProvider通过对象和方法表来确定需要调用哪个服务对象的哪个方法。 UserRpcServiceRpc和UseRpcServiceRpcStub是继…

【practise】电话号码的字母组合

关于我&#xff1a; 睡觉待开机&#xff1a;个人主页 个人专栏: 《优选算法》《C语言》《CPP》 生活的理想&#xff0c;就是为了理想的生活! 作者留言 PDF版免费提供&#xff1a;倘若有需要&#xff0c;想拿我写的博客进行学习和交流&#xff0c;可以私信我将免费提供PDF版。…

立即升级你的前端技能!跟随这份Vue3项目搭建教程,从零基础到专业,一步步掌握最新Web开发技术,打造响应快速、界面优雅的现代网站。

全能开发套餐&#xff0c;轻松打造现代网站&#xff01;Vue3携手Vite带来开发新体验&#xff0c;结合Axios、Pinia、Element Plus实现功能与美观并重&#xff0c;TailwindCSS与DaisyUI提供设计灵活性&#xff0c;Router 4处理页面导航。从前端到后端&#xff0c;一站式解决&…

一、Matlab基础

文章目录 一、Matlab界面二、Matlab窗口常用命令三、Matlab的数据类型3.1 数值类型3.2 字符和字符串3.3 逻辑类型3.4 函数句柄3.5 结构类型3.6 细胞数组 四、Matlab的运算符4.1 算术运算符4.2 关系运算符4.3 逻辑运算4.4 运算符优先级 五、Matlab的矩阵5.1 矩阵的建立5.2 矩阵的…

【Linux】输入输出重定向

目录 一、概念 二、重定向的本质 三、系统调用接口dup和dup2 3.1 dup 3.2 dup2 一、概念 在之前对Linux的学习中&#xff0c;我们有接触过一系列的重定向命令&#xff0c;例如 >、>>等 它们可以将一个命令的输出或输入重定向到其他地方&#xff0c;如echo命令…

开源应用:AI监测如何成为社会安全的智能盾牌

社会背景 随着社会的快速发展&#xff0c;社会安全管理正站在一个新时代的门槛上。社会对安全管理的需求不断增长&#xff0c;传统的安全措施已难以满足现代社会的需求。AI技术以其独特的数据处理和模式识别能力&#xff0c;正在成为我们社会安全的智能盾牌。 AI大模型识别功能…

3.js - 物理引擎终极

import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls import gsap from gsap // 导入动画库 import * as dat from dat.gui // 导入dat.gui// 导入 cannon-es 引擎 import * as CANNON from cannon-es// -----------------…

探索GPT-4o mini:开启AI驱动的开发新时代

文章目录 GPT-4o mini&#xff1a;小身材&#xff0c;大能量成本与效能的完美平衡 AI辅助开发&#xff1a;从构想到现实自动化文档编写智能代码审查 提升创新能力&#xff1a;AI驱动的新常态模型驱动的设计思维 社区共享与合作知识共享的重要性 未来展望&#xff1a;AI与人类的…

<数据集>agv仓储机器人识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;1514张 标注数量(xml文件个数)&#xff1a;1514 标注数量(txt文件个数)&#xff1a;1514 标注类别数&#xff1a;3 标注类别名称&#xff1a;[G1PB2000_Paleteira_AGVS BYD, G1RB5000, AGV-P] 序号类别名称图片数…

6自由度机械手DH坐标系建立

一、建立机械臂DH坐标系 Z为转动关节的转轴&#xff0c;Xi垂直于关节轴i和i1所在的平面&#xff0c;则根据上述方法可以建立坐标系如下图&#xff1a; 二、DH参数表 DH参数设定&#xff1a;机器人的每个连杆可以用4个运动学参数表示&#xff0c;DH法建立坐标系&#xff0c;xi-…

[开端]如何看待“低代码”开发平台的兴起

如何看待“低代码”开发平台的兴起&#xff1f; 近年来&#xff0c;“低代码”开发平台如雨后春笋般涌现&#xff0c;承诺让非专业人士也能快速构建应用程序。这种新兴技术正在挑战传统软件开发模式&#xff0c;引发了IT行业的广泛讨论。低代码平台是提高效率的利器&#xff0…