写点什么

Python 爬虫实战:利用青果代理 IP 获取跨境电商数据

作者:袁袁袁袁满
  • 2024-10-17
    四川
  • 本文字数:5179 字

    阅读完需:约 17 分钟

一、跨境电商数据的作用

在全球化经济日益紧密的今天,跨境电商已成为推动国际贸易发展的重要引擎。随着技术的不断进步,数据已成为跨境电商领域中最宝贵的资源之一。跨境电商数据不仅反映了市场趋势、消费者行为,还为企业提供了宝贵的洞察,助力企业精准定位、优化运营、提升竞争力。以下是跨境电商数据在多个维度上的重要作用:

1.1 市场趋势预测与洞察

跨境电商数据能够帮助企业捕捉全球市场的最新动态,包括热门商品类别、消费者偏好变化、新兴市场需求等。通过分析历史销售数据、社交媒体趋势、搜索引擎热度等信息,企业可以预测未来市场走向,及时调整产品线和市场策略,抓住市场机遇。

1.2 消费者行为分析

深入了解目标市场的消费者行为是跨境电商成功的关键。数据可以帮助企业分析消费者的购买习惯、偏好、支付意愿以及购物路径等,从而定制化营销策略,提高转化率。例如,通过分析用户浏览记录、购买历史及反馈,企业可以实施个性化推荐,增强用户体验和忠诚度。

1.3 库存管理优化

跨境电商涉及跨国物流,库存管理尤为复杂。利用大数据分析,企业可以预测不同市场的销售峰值与低谷,实现库存的动态调整,减少库存积压和缺货风险,提高资金周转率。同时,数据还能帮助优化供应链布局,缩短配送时间,提升客户满意度。

1.4 定价策略制定

跨境电商平台上的价格竞争异常激烈。通过监测竞争对手价格、分析成本结构、评估市场需求弹性,企业可以制定更具竞争力的定价策略。数据驱动的定价不仅能最大化利润,还能在保持市场份额的同时,避免价格战带来的负面影响。

二、爬取目标

本次的爬取目标是 Lazada 电商平台输入关键词后的全部商品信息列表,并且进行翻页:


三、环境准备

Python:3.10 编辑器:PyCharm 第三方模块,自行安装:


pip install requests # 网页数据爬取pip install pandas # 数据处理
复制代码

四、代理 IP 获取

4.1 为什么爬虫要用代理 IP?

1、爬虫使用代理 IP 主要是为了避免因频繁访问同一网站而被识别并封禁真实 IP,同时代理 IP 还能帮助绕过地域限制,提高数据采集的效率和成功率。


2、由于跨境电商数据量大,想要成功获取到数据就比必须要使用到代理 IP。

4.2 为什么选择青果代理 IP?

经常有写爬虫的粉丝跑来问我有没有比较靠谱的代理 IP 可以推荐一下?


我个人的话,长期写爬虫代码都是使用的是青果代理 IP(http://b.mtw.so/5zyVWU),体验下来的感受有几点:


1、响应速度快,代理 IP 质量高


2、价格便宜,单个 IP 才 0.0014 元


3、套餐丰富,可以选择按天或者按量计费,选择灵活并且性价比高



当然最重要的他们家短效代理、独享代理、隧道代理、静态代理都可以<font color=red size=4>免费体验 6 小时</font>,真的太香了!!!



感兴趣的小伙伴可以看下文跟着博主免费领取使用哟!

4.3 青果代理 IP 领取

1、打开官网地址注册一个账号:http://b.mtw.so/5zyVWU



2、选择 6 小时的免费套餐:



3、免费购买成功,点击提取 IP:



4、设置提取规则,这里默认即可,点击打开链接:



5、网页上成功返回 IP,提取没问题:


4.4 利用代码获取 IP

1、复制 API 链接:



2、在博主的提取代码中修改 url 为自己的 API 链接:



代码如下:


import requestsimport time

def get_ip(): url = "这里放你自己的API链接" while 1: try: r = requests.get(url, timeout=10) except: continue
ip = r.text.strip() if '请求过于频繁' in ip: print('IP请求频繁') time.sleep(1) continue break proxies = { 'https': '%s' % ip }
return proxies

if __name__ == '__main__': proxies = get_ip() print(proxies)
复制代码


3、代码返回 IP,运行成功:


五、爬虫代码实战

我们爬取一个网站时,首先要查看是否有接口数据(有接口就用接口)、其次是能否用 requests 模块发送请求正常获取数据,如果 requests 模块不行就考虑使用 selenium 模块去获取数据了。

5.1 分析网页

1、我们首先打开电商平台官网,并在输入框输入我们想要爬取的商品列表:https://www.lazada.com.ph/#?



2、按下 f12 或者 右击选择检查,选择 Network,然后点击刷新:



3、我们随便选择一个 Network 下面的列表,接着按 ctrl+f 打开搜索框,搜索商品信息找到接口:



4、接着点击接口,找到接口链接复制去新界面打开:



5、我们在新界面打开接口连接后可以看到有翻页关键词 page 和 检索关键词 q:



6、尝试改变翻页关键词 page 的值,网页正常打开并且数据刷新了,到这里就可以确定我们使用这个接口获取手机数据是没问题:



7、尝试将检索关键词 q 的值改为 fruit(水果),网页正常打开并且数据刷新了,到这里就可以确定我们使用这个接口可以传入任何关键词都是没问题的:



8、回到 Network 界面,点击 Response,随便点击下面的内容,接着按 ctrl+f 打开搜索框,搜索商品信息,成功找到我们需要的数据都在 listItems 列表下面的一个个字典中,那么等会我们只需要定位到这个列表,遍历并解析字典中的数据即可:



9、点击 Preview 可以看到 listItems 列表下面有 40 个商品信息,并且我们能轻松查看字段的层级:


5.2 导入模块

import requests  # python基础爬虫库import pandas as pd  # pandas,用于写入Excel文件import time  # 防止爬取过快可以睡眠一秒
复制代码

5.3 传入关键词设置翻页

根据 5.1 的网页分析我们了解了,只要在接口链接传入关键词和页数就可以成功获取数据:


def main():    # 一、传入关键词和需要爬取的页数,拼接数据接口链接    keyword = 'phone' # 设置需要爬取的商品关键词    page_num = 1  # 设置需要爬取的页数    data_list = []    for page in range(1, page_num+1):        url = f'https://www.lazada.com.ph/catalog/?ajax=true&isFirstRequest=true&page={page}&q={keyword}'
复制代码

5.4 携带代理 IP 发送请求

下面代码利用 4.4 案例中的 get_ip() 函数去获取代理 IP,利用 python 携带代理 IP 去请求电商平台,以此达到隐秘 IP 的目的:


def get_data_json(url):    """发送请求,获取响应"""    # 请求头模拟浏览器    headers = {        'Authority':'www.lazada.com.ph',        'Refere':'https://www.lazada.com.ph/',        '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'    }    # 获取代理IP    proxies = get_ip()    # 添加请求头和代理IP发送请求    response = requests.get(url,headers=headers,proxies=proxies)    # 将数据转为json字典格式    data_json = response.json()
return data_json
复制代码

5.5 提取数据

提取我们需要的商品标题、商品价格、商品销量、五星好评数、商品链接、商品图片链接,如果需要更多的其他字段可以自己添加解析代码:


def get_data(data_list,data_json):    listItems = data_json['mods']['listItems']    print(len(listItems)) # 打印listItems列表长度,返回40,说明数据正确    for i in listItems:        try:            name = i['name']        except:            name = None        try:            priceShow = i['priceShow']        except:            priceShow = None        try:            itemSoldCntShow = i['itemSoldCntShow'].replace(' sold','')        except:            itemSoldCntShow = None        try:            review = i['review']        except:            review = None        try:            itemUrl = i['itemUrl']            url = 'https:' + itemUrl        except:            url = None        try:            image = i['image']        except:            image = None        print({'商品标题':name,'商品价格':priceShow,'商品销量':itemSoldCntShow,'五星好评数':review,'商品链接':url,'商品图片链接':image})        print('*'*50)        data_list.append({'商品标题':name,'商品价格':priceShow,'商品销量':itemSoldCntShow,'五星好评数':review,'商品链接':url,'商品图片链接':image})
复制代码


运行成功返回数据:


5.6 保存数据

将数据全部写入 excel 文件中去:


def save(data_list,keyword):    df = pd.DataFrame(data_list)    df.to_excel(f'{keyword}.xlsx',index=False) # 根据关键词创建excel文件
复制代码

5.7 效果展示

使用青果代理 IP 成功爬取电商数据,效果非常 Nice,最终生成一个 excel 表格,有商品标题、价格、销量等等:


5.8 完整源码

注意下面的完整源码,需要看 4.3 和 4.4 修改为自己的代理 API 才能运行成功,还可以修改爬取的关键词和页数:


import requests  # python基础爬虫库import pandas as pd  # pandas,用于写入Excel文件import time  # 防止爬取过快可以睡眠一秒

def get_ip(): url = "https://share.proxy.qg.net/get?key=E662BCF4&num=1&area=&isp=0&format=txt&seq=\r\n&distinct=false" while 1: try: r = requests.get(url, timeout=10) except: continue
ip = r.text.strip() if '请求过于频繁' in ip: print('IP请求频繁') time.sleep(1) continue break proxies = { 'https': '%s' % ip }
return proxies

def get_data_json(url): """发送请求,获取响应""" # 请求头模拟浏览器 headers = { 'Authority':'www.lazada.com.ph', 'Refere':'https://www.lazada.com.ph/', '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' } # 获取代理IP proxies = get_ip() # 添加请求头和代理IP发送请求 response = requests.get(url,headers=headers,proxies=proxies) # 将数据转为json字典格式 data_json = response.json()
return data_json

def get_data(data_list,data_json): listItems = data_json['mods']['listItems'] print(len(listItems)) # 打印listItems列表长度,返回40,说明数据正确 for i in listItems: try: name = i['name'] except: name = None try: priceShow = i['priceShow'] except: priceShow = None try: itemSoldCntShow = i['itemSoldCntShow'].replace(' sold','') except: itemSoldCntShow = None try: review = i['review'] except: review = None try: itemUrl = i['itemUrl'] url = 'https:' + itemUrl except: url = None try: image = i['image'] except: image = None print({'商品标题':name,'商品价格':priceShow,'商品销量':itemSoldCntShow,'五星好评数':review,'商品链接':url,'商品图片链接':image}) print('*'*50) data_list.append({'商品标题':name,'商品价格':priceShow,'商品销量':itemSoldCntShow,'五星好评数':review,'商品链接':url,'商品图片链接':image})


def save(data_list,keyword): df = pd.DataFrame(data_list) df.to_excel(f'{keyword}.xlsx',index=False) # 根据关键词创建excel文件

def main(): # 一、传入关键词和需要爬取的页数,拼接数据接口链接 keyword = 'phone' # 设置需要爬取的商品关键词 page_num = 10 # 设置需要爬取的页数 data_list = [] for page in range(1, page_num+1): # url = f'https://www.lazada.com.ph/catalog/?ajax=true&isFirstRequest=true&page={page}&q={keyword}' url = 'https://www.lazada.com.ph/catalog/?ajax=true&isFirstRequest=true&page=1&q=phone&spm=a2o4l.homepage.search.d_go.5f06ca18Bg0Fun' print(url) # 二、发送请求获取数据 data_json = get_data_json(url) # 三、解析数据 get_data(data_list,data_json) time.sleep(1) # 降低爬取速度 # 四、写入excel save(data_list, keyword)

if __name__ == '__main__': main()
复制代码

五、总结

在跨境电商领域的广阔舞台上,面对复杂多变的业务需求,众多出海企业正不断探索高效、稳定的解决方案以应对重重挑战。青果代理 IP 作为数据采集领域的利器,凭借其卓越的访问稳定性、增强的网站信任度以及强大的防封禁能力,极大地促进了跨境电商的数据采集,有兴趣的小伙伴都可以试试:http://b.mtw.so/5zyVWU

发布于: 刚刚阅读数: 5
用户头像

还未添加个人签名 2022-04-28 加入

还未添加个人简介

评论

发布
暂无评论
Python爬虫实战:利用青果代理IP获取跨境电商数据_Python_袁袁袁袁满_InfoQ写作社区