当前位置: 首页 > news >正文

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

引言

        在行业竞争激烈、市场变化快速的跨境电商领域,数据采集可以帮助企业深入了解客户需求和行为,分析市场趋势和竞争情况,从而优化产品和服务,提高客户满意度和忠诚度。同时,数据采集可以实时跟踪库存水平和销售情况,帮助企业管理库存,减少库存成本和浪费,优化供应链,提高物流和配送效率。因此,数据采集对于跨境电商而言是至关重要的,可以帮助企业提高效率和盈利能力,获得竞争优势。

        但现实中,数据采集可能会遇到多样化的数据来源、不统一的数据格式、庞大的数据量、数据质量和安全隐私问题等困难和挑战。为了应对这些挑战,可以采用旋转代理或IP池避免频繁请求同一IP地址模拟用户行为(如随机请求间隔和动态内容处理)设置请求头使请求看起来更像真实浏览器、随机化请求参数、延时和限速策略、动态IP切换、模拟AJAX请求等方式但这些方式都必须避免网站检测到请求来自同一台设备,这时就需要使用代理工具。

数据采集实战

        这里我们尝试采集Temu电商网站数据。Temu是一个电商平台,它成立于2019年。Temu主要针对年轻消费者,提供各种时尚、潮流、品质优良的消费品,包括服饰、鞋类、家居用品、个护产品、运动健康用品等。Temu的特色之一是价格实惠,致力于为消费者提供高性价比的商品。由于Temu网站主要做跨境电商业务,所以网站有很多验证机制,大陆IP很容易连接不上网站同时,网站也具有多纬度的爬虫检测机制。避免这些困难的一大方法就是使用代理服务。

 云端配置

市面上能够解锁网络验证机制的代理工具很多,今天我们选用Proxy302这家代理服务。首先进入控制台页面,点击“动态IP”,然后选择“通用代理生成”,即可生成一条代理。如果需要指定某个区域IP的话,也可以通过地区代理生成实现。

        生成完毕后在“已购代理”中即可找到代理。其中代理地址、端口、用户名、密码均在第一格显示,最后一格中可以开关代理,到这里我们就可以开始使用代理。

远程PC

        有些同学可能希望有一个更为直观的可视化使用环境,可以配置一台远程电脑实现。使用方法也很简单,首先要先配置一下连接工具。点击“连接工具”,选择想要的远程PC区域和配置即可创建。创建好之后在下方可以找到远程PC的用户名和密码。

      

  之后点击“远程控制”,即可在网页端控制远程PC并连接到代理。

        输入用户名和密码即可连接上。

        等待2-3分钟,就可以加载到系统中。可以看到它就是一台云电脑,可以按照自己喜欢的方式来操作和访问代理服务器。

数据采集

        在采集数据之前,我们先观察一下网页结构。使用开发者工具可以看到,商品名和价格位于一个div下的两个不同div之中。通过aria-label属性可以轻松定位到两个数据。

        基于以上分析,我们可以编写一个Python爬虫来抓取这几处的商品信息。首先我们需要编辑请求头,使得网站认为我们是一个用户而非程序。

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'}

        之后按照我们在网页中配置的数据配置代理。按照url形式填入我们的代理地址、端口、用户名、密码,并将其放置在一个字典中。

host = 'proxy.proxy302.com:2222' 
user_name = 'maNwkWj2S'
password = 'tIegn05sPzyLdl0m' 
proxy_url = f'http://{user_name}:{password}@{host}' 
proxies = {
'http': proxy_url}

之后我们使用requests包通过配置好的代理发送请求,并获得网页。

response = requests.get(url, headers=headers, proxies=proxies)
html_str = response.text
return html_str

        再之后我们就可以按照分析抓取商品信息。这里们选用xpath的方式,按照层级选中目标,之后保存在一个字典中。

html_data = etree.HTML(html_str)li_list = html_data.xpath('//div[@dd_name="普通商品区域"]/ul/li')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)pre_price = li.xpath('.//p[@class="price"]/span[@class="price_r"]/text()')[0]img_url = 'https:' + li.xpath('.//a[@class="pic"]/img/@src')[0]print({'页码': page, '标题': title, '价格': price, '定价': pre_price, '商品链接': goods_url,'图片链接': img_url})data_list.append({'页码': page, '标题': title, '价格': price, '定价': pre_price, '商品链接': goods_url,'图片链接': img_url})

最后,我们将获取到的数据写入到本地文件中。

df = pd.DataFrame(data_list)
df.drop_duplicates()
df.to_excel('电商采集数据集.xlsx')

最后通过主函数,将网址和查询关键词发送到函数中,之后让我们运行一下。

可以看到程序正常运行。打开生成的文件可以看到最终的结果。

完整代码如下:

import pandas as pd  # pandas,用于写入Excel文件
import requests  # python基础爬虫库
from lxml import etree  # 可以将网页转换为Elements对象
import time  # 防止爬取过快可以睡眠一秒host = 'proxy.proxy302.com:2222' 
user_name = 'maNwkWj2S' 
password = 'tIegn05sPzyLdl0m' proxy_url = f'http://{user_name}:{password}@{host}' 
proxies = {'http': proxy_url,}def get_html_str(url):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': 'dest_area=country_id%3D9000%26province_id%3D111%26city_id%3D0%26district_id%3D0%26town_id%3D0; __permanent_id=20240526224738315295956158315909549; ddscreen=2; __dd_token_id=202104062202466363669562232a8cdf; search_passback=51a9db4eecb3b24ff6ab7766fc010000fbbbca00dcab7766; pos_6_start=1716734858859; pos_6_end=1716734858807; deal_token=1576b51797067261d98918f7285bd6495f87d87938a72c8849da21f5acf064403857abf3742ed1c739; login_dang_code=202103291113455962963369449d079d; bind_custid=106901607; __visit_id=20240623125745069259408506015858558; __out_refer=1719118665%7C!%7Cwww.baidu.com%7C!%7C; __trace_id=20240623125804232373763612518646769; __rpm=s_112100...1719118830586%7Clogin_page...1719118833969; sessionID=pc_4012ba7c7eaa04527a44c2379c16b0c6164ad4d2625cd18cfe1c7acbf03f1be0; USERNUM=8Y+5nq8RumeCtfoBrVftkA==; login.dangdang.com=.ASPXAUTH=qFvA8gjuJvlbZfleoWsswUEz1frglA5/; dangdang.com=email=bWF3ZW5jYWkxOTk0QDE2My5jb20=&nickname=&display_id=9562776931392&customerid=kVr1TGEUb6ByKz6allcKDQ==&viptype=04VLqcFOuaQ=&show_name=156****4818; ddoy=email=mawencai1994@163.com&nickname=&validatedflag=2&uname=mawencai1994%40163.com&utype=0&.ALFG=off&.ALTM=1719118838363; LOGIN_TIME=1719118839620'}response = requests.get(url, headers=headers, proxies=proxies)html_str = response.textreturn html_strdef get_data(html_str, page, data_list):html_data = etree.HTML(html_str)li_list = html_data.xpath('//div[@dd_name="普通商品区域"]/ul/li')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)pre_price = li.xpath('.//p[@class="price"]/span[@class="price_r"]/text()')[0]img_url = 'https:' + li.xpath('.//a[@class="pic"]/img/@src')[0]print({'页码': page, '标题': title, '价格': price, '定价': pre_price, '商品链接': goods_url,'图片链接': img_url})data_list.append({'页码': page, '标题': title, '价格': price, '定价': pre_price, '商品链接': goods_url,'图片链接': img_url})def to_excel(data_list):df = pd.DataFrame(data_list)df.drop_duplicates()df.to_excel('电商采集数据集.xlsx')
def main():print('开始作业')keyword = '手机'page_num = 1data_list = []for page in range(1, page_num + 1):url = f'https://www.temu.com/search_result.html?search_key={keyword}&search_method=user&refer_page_el_sn=200010&srch_enter_source=top_search_entrance_10005&refer_page_name=home&refer_page_id=10005_1722768505220_nkdyrd23tn&refer_page_sn=10005&_x_sessn_id=iq9v42rvzn'html_str = get_html_str(url)get_data(html_str, page, data_list)time.sleep(1)to_excel(data_list)if __name__ == '__main__':main()print('抓取成功!')

AI助手

        对于编程困难的同学,可以尝试使用Proxy302家的AI集成平台302.AI。它集合了市面上主流的AI工具,采用量贩化结算方式,在一个平台中自定义满足所有需求。注册登录之后,在控制面板左侧即可根据需求定制AI工具,之后即可按照实际流量计费使用,非常的方便快捷!由于都是Proxy302家的产品,所以余额也是共享的。通过它也可以辅助我们生成爬虫代码,快速获取数据。

总结

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

        Proxy302提供动态IP和静态住宅IP两种代理。动态IP具备智能切换功能,可以自动更换代理IP,模拟真实用户行为,进一步降低被检测到的风险。同时根据业务需求,静态IP能够提供高稳定性和快速响应速度,确保数据采集的连续性和效率,不会因代理不稳定而中断。这些IP都具有高级别的匿名性,确保用户的真实IP地址不被暴露,保护隐私并避免被网站封禁,同时用户可以根据需求选择特定地区的代理IP,以适应区域特殊需求。

        这些优势使得Proxy302能够为电商平台爬虫的实现提供了强有力的支持。

        无论是匿名性、安全性还是效率,Proxy302都提供了丰富的功能和优质的用户体验,是企业和个人在数据采集领域的理想选择。数据采集对工具的需求十分苛刻,Proxy302的功能其实远不止这些,欢迎各位私信博主,跟我一起继续探讨。

相关文章:

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

引言 在行业竞争激烈、市场变化快速的跨境电商领域,数据采集可以帮助企业深入了解客户需求和行为,分析市场趋势和竞争情况,从而优化产品和服务,提高客户满意度和忠诚度。同时,数据采集可以实时跟踪库存水平和销售情况&…...

【MATLAB源码-第244期】基于MATLAB的BP神经网络语音特征信号分类,输出原信号与预测信号对比图以及预测误差和正确率。

操作环境: MATLAB 2022a 1、算法描述 BP神经网络(Back Propagation Neural Network)是一种广泛应用于模式识别和分类问题的人工神经网络。在本次语音特征信号分类任务中,我们将详细描述如何通过BP神经网络实现对四类语音信号的…...

HarmonyOS 习题(二)

1、在类Web开发范式自定义组件创建后,加入到Page组件树时,会触发以下哪一项回调。 A)Onlnit B)OnAttached C)OnLayoutReady D)OnDetached 答案:B 分析: onlnit:自定义组件初始化生命周期回调&a…...

如何搭建一个圈子社区系统?开源社交陪玩交友圈子论坛帖子系统保姆级搭建教程!

整体部署流程如下: 1.获取源码/前后端分离,前端Uniapp vue2.0 后端thinkphp6(Gitee直达) 2.服务器安装宝塔(已有宝塔请安装环境,Nginx或者Apache/ php 7.3/ mysql 5.6 ) 3.进入宝塔添加网站&…...

Delphi5实现身份证检验(DLL版)

效果图 身份证行政区划分代码 识别归属地需要行政区划分,都在data.txt文档里面了。 最后一位校验码 根据上面的原理编写程序即可。 {这个函数计算最后一位检验码是否正确,ID是18位身份证号字符串,结果返回字符串} function IDcheck(ID:stri…...

linux下的C++程序

1.安装g编译环境(c)、gcc编译环境(c语言) sudo yum install gcc或者gcc-c //安装gcc/g编译(用管理员权限弄) 验证是否安装成功 gcc或者g --version //如果显示版本号,则表示安装成功 sudo yum remove g…...

selfAttention 中的dk到底是什么

在Self-Attention机制中,为什么需要对 Q K T QK^T QKT 的结果进行缩放,除以 d k \sqrt{d_k} dk​ ​。以下是详细解释: 缩放的原因 除以 d k \sqrt{d_k} dk​ ​ 的原因有两个: 防止输入过大:如果不缩放&#xf…...

安装MongoDB UI客户端工具:mongodb-compass-1.40.2-win32-x64.msi

文章目录 1、安装 mongodb-compass-1.40.2-win32-x64.msi2、安装后配置链接地址: 1、安装 mongodb-compass-1.40.2-win32-x64.msi 2、安装后配置链接地址:...

一行命令搞定内网穿透

一行命令搞定内网穿透 一款开源免费的内网穿透工具:localtunnel ,基于 nodejs 实现,无需修改 DNS 和防火墙设置,方便快捷的将内网服务暴露到外网,为开发人员、测试人员以及需要分享本地项目的人提供实时的公网访问方式…...

C语言——扫雷游戏

扫雷游戏通常是一个由方格组成的区域内进行的,其中随机分布着一定数量的地雷 。玩家的目标是通过点击方格来标记出所有地雷的位置,同时避免自己点到地雷而导致游戏失败。游戏开始时,玩家通常只能看到一部分方格,而其余的方格则需要…...

【LLM】-16-评估LLM-与标准答案的差距

目录 1、评估回答是否正确 1.1、util_zh 1.2、eval_zh 1.3、评估 2、评估生成答案与标准答案的差距 2.1、eval_zh2 2.2、评估 即使没有提供的理想答案,只要能制定一个评估标准,就可以使用一个 LLM 来评估另一个 LLM 的输出。 如果可以提供理想答…...

WeNet 2.0:更高效的端到端语音识别工具包

WeNet 2.0:更高效的端到端语音识别工具包 原文链接:[2203.15455] WeNet 2.0: More Productive End-to-End Speech Recognition Toolkit (arxiv.org) 1.摘要 WeNet是一个开源的端到端语音识别工具包,WeNet 2.0在此基础上进行了四项主要更新&#xff0c…...

阿里大模型调用 = 》通义千问大语言模型

背景:简单的通过API或者SDK在线调用阿里云大模型(基于百炼平台),基于在线知识库 参考地址:安装阿里云百炼SDK_大模型服务平台百炼(Model Studio)-阿里云帮助中心 (aliyun.com) 1、获取API-KEY 当您通过API/SDK调用大模…...

idea使用free流程,2024idea免费使用

1.先到官网下载,这里选择win系统的,点击下图的.exe https://www.jetbrains.com/idea/download/?sectionwindows 2.下载好后基本上就是一直点击“下一步”到直到安装好,安装好后先打开软件后关闭退出 3.下载配配套资料 链接: https://pan.ba…...

算法_链表专题---持续更新

文章目录 前言两数相加题目要求题目解析代码如下 两两交换链表中的结点题目要求题目解析代码如下 重排链表题目要求题目解析代码如下 合并K个升序链表题目要求题目解析 K个一组翻转链表题目要求题目解析代码如下 前言 本文将记录leetcode链表算法题解,包含题目有&a…...

在Windows MFC\C++编程中,如何使用OnCopyData函数

在C中,OnCopyData 函数通常不是标准C库的一部分,而是与特定的图形用户界面(GUI)框架相关联,如Microsoft Foundation Classes (MFC) 或 Windows API 编程。在MFC应用程序中,OnCopyData 是用于处理来自其他应…...

【Qt】项目代码

main.cpp文件 argc:命令行参数个数。*argv[ ]:每一个命令行参数的内容。main的形参就是命令行参数。QApplication a(argc, argv) 编写一个Qt的图形化界面程序,一定需要QApplication对象。 widget w; 在创建项目的时候,勾选widg…...

MySQL中常用工具

MySQL自带的系统数据库 常用工具 MySQL mysqladmin mysqlbinlog mysqldump mysqlimport/source mysqlimport只能导入文本文件,不能导入sql文件...

关于儿童编程语言

青少年通常会通过Scratch或Python开始学习编程。在这两种语言中,代码的编写(或者在Scratch中是构建)方式类似于英语,这使得初学者更容易学习。Scratch的一个重要卖点是对视觉和运动感知学习者非常友好。这些代码块按颜色编码&…...

[io]进程间通信 -信号函数 —信号处理过程

sighandler_t signal(int signum, sighandler_t handler); 功能: 信号处理函数 参数: signum:要处理的信号 handler:信号处理方式 SIG_IGN:忽略信号 SIG_DFL:执行默认操作 handler:捕捉信 …...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

微信小程序云开发平台MySQL的连接方式

注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

网站指纹识别

网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

C++ 设计模式 《小明的奶茶加料风波》

👨‍🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...