Python爬虫:代理ip电商数据实战

news2024/9/20 14:23:02

引言:数据访问管理引发的烦恼

作为一名Python博主,爬虫技能对于获取和分析数据至关重要,经常爬一下,有益身心健康嘛。爬虫技术对很多人来说,不仅仅是一种工具,更像是一种艺术,帮助我们从互联网中,捕捉到有价值的信息。我经常就会用爬虫来爬取一些所需的数据,用来进行数据分析和模型训练。虽然网络上公开的数据很多,但是碍于其时效性和准确性,很难拿来直接用,所以我总是亲自来爬取数据。

这不前几天,我正在为训练的模型爬取数据的时候,爬着爬着我的爬虫突然不工作了!检查了好几遍都没有发现哪里出错,已经爬了一半了,这可把我急坏了。在网上查阅了大量的资料后,我发现可能是其触发了访问管理机制。按照检查方法,当处于非爬虫操作时,我们在F12控制台输入window.navigator.webdriver时,显示的是false,但是我输入进去却出现了刺眼的红色报错,而且显示也出现了True,我更加相信是我触发了访问管理机制。
在这里插入图片描述
“Failed to load resource: the server responded with a status of 400”,对这个报错我专门去请教了数据分析的前辈,他告诉我这就是非常典型的爬虫触发了访问管理机制,检测出是selenium,报400,无法进入网站。

一、为什么会出现访问管理

为什么会出现访问管理机制呢,想了一大圈,也没发现自己哪里违反了规定,经过他的解答,我才知道原来很多网站常用的一种方式是对单ip进行管理,如果一个ip在一定的时间内大量访问,那么就会不再返回信息,而是返回错误。访问管理机制,听起来就像是网站的“防盗系统”。它们通过各种技术手段,试图识别并阻止自动化的数据抓取行为。这些手段包括但不限于:管理单个IP地址的访问频率、检测用户代理字符串、分析访问模式等。一旦检测到异常行为,网站就会采取相应的措施,比如管理访问、返回错误信息等。
我们此次的触发访问管理机制的原因便是,待爬取的网站运行自己的 JavaScript 代码,对我的爬虫发送过去的请求信息进行检测,然后发现我们是selenium后,触发了 “防盗系统”,就把我们爬虫的请求阻止了。就像上图所示,表现为返回400错误码,意味着请求无法被服务器理解或接受。

二、代理IP的解决方案

这时,代理IP显得尤为重要,它能帮助处理这些管理。代理IP本质上是一个位于用户和目标服务器之间的中介服务器。当用户通过代理IP发送请求时,请求首先到达代理服务器,然后由代理服务器转发到目标服务器。这样,使用代理服务器来代替用户的真实IP地址发送网络请求,从而隐藏用户的真实身份,减少被目标网站识别的风险。
代理IP的作用

  1. 匿名性:代理IP提供了一种匿名访问网络的方式,用户的真实IP地址被隐藏,从而保护用户的隐私。
  2. 高效采集全球公开数据:对于某些受到地区或访问机制管理的平台,通过更换合适的代理IP,可帮助访问原本无法访问的网站和服务。
  3. 地理位置多样性:代理IP通常具有不同的地理位置,可以帮助用户访问那些有地区要求的资源。

代理IP的类型

  1. 透明代理:代理服务器向目标服务器透露用户的真实IP地址,但隐藏了请求的来源。
  2. 普通匿名代理:代理服务器不向目标服务器透露用户的真实IP地址,但目标服务器知道请求是通过代理发出的。
  3. 高匿名代理:代理服务器不向目标服务器透露任何用户信息,目标服务器看到的只是代理服务器的IP地址。

三、代理服务的选择:IPIDEA平台

代理ip的作用很大,然而选择合适的代理服务并非易事,网上关于代理ip的网站有很多,不搜不知道,一搜直接吓我一跳,网页上代理平台眼花缭乱,各种广告满天飞,根本不知道如何选择。我看到这些广告我就想放弃了,根本无心去研究啊,太乱了!但是幸好,老前辈给我推荐了一个他认为比较靠谱的平台,比较容易上手和使用,让我自己回去试试看。
一回到家后,我就迫不及待使用起来了,经过了解,其在全球具有很高的覆盖的住宅IP资源和更新频率,在网上的风评也很好,这让我更加感兴趣起来。

四、代理服务的具体操作

经过半小时的学习和实践,我就已经可以熟练使用其ip代理功能,接下来我把自己的操作分享给大家。

API代理获取

首先登录进平台之后,我们就会看到下面的界面,第一步点击获取代理,然后点击API提取就可以去获取我们需要的API了:
在这里插入图片描述
要提取API有三个方式,这里推荐方式一和方式二,这样选择是因为有利于我们后期利用代理IP去做开发使用。这里我们以方式一中的API提取作为例子,在提取的时候可以手动选择选择套餐及提取数量,还有我们想要的ip的所属国家,在这些都选定好之后,就可以一键生成专属的API链接了,记住这个API链接,下面会用到。在这里插入图片描述
打开这个链接就会看到生成的所有ip了:
在这里插入图片描述

浏览器设置代理IP

IPIDEA的代理服务支持多种IP代理服务,使用灵活且易于操作,且可以放到浏览器上使用,这里我们以谷歌浏览器为例,找到谷歌浏览器的右上角的三个点,选择【设置】进入,在设置中点击【系统】以后选择【打开您计算机的代理设置】
在这里插入图片描述
在手动设置代理中,开启使用代理服务器,填写我们刚才打开链接看到的ip,这里只需要填写一个ip就可以了吧,比如这里我们在这里选择的代理ip:109.74.194.146.10303,其中109.74.194.146就是代理ip的地址,后面的10303就是端口信息。
在这里插入图片描述
配置完成之后,打开谷歌搜索引擎,搜索IP就可以看到当前代理后的IP地址,成功给我们匹配到英国伦敦,说明这是一个来自英国的代理IP。
在这里插入图片描述

五、代理IP在跨境电商的应用

除此之外,代理IP在跨境电商和海外市场分析中发挥着重要作用。在当下主流的电商平台,如亚马逊和EBay,都对爬虫有着很强的防护机制,不稳定的IP地址就会很容易被平台识别。特别是像EBay这样的海外大平台,它们在全球多个国家和地区设有分支机构,这就需要使用不同地区的IP地址来分别管理。
一个不稳定或被多次使用的代理IP不仅不可靠,而且速度会很慢,更有可能这个ip已经被注册使用过,如果再使用就会招致来很多不必要的麻烦。因此,无论对从事跨境电子商务的企业,还是做跨境电商数据的用户来说,拥有一个稳定可靠的代理IP是至关重要的。IPIDEA在这方面做得非常出色,这也是推荐使用IPIDEA平台的一个重要原因。
拿我最喜欢鞋子来举例子,通过使用代理ip依靠爬虫,我们就可以轻松获取EBay的海外平台价格。
在这里插入图片描述
首先设置代理IP API URL,将我们生成的代理ip链接放入进去,然后构建代理字典:

proxy_api_url = 'http://api.proxy.ipidea.io/getBalanceProxyIp'
params = {
    'num': 100,
    'return_type': 'txt',
    'lb': 1,
    'sb': 0,
    'flow': 1,
    'regions': '',
    'protocol': 'http'
}

# 获取代理IP
response = requests.post(proxy_api_url, headers=headers, params=params, verify=True)
proxy_ip = response.text

# 构建代理字典
proxies = {
    'http': f'https://{proxy_ip}',
    'https': f'https://{proxy_ip}'
}

print(f"Using proxy: {proxy_ip}")

完成代理ip的部署之后,对商品页面进行抓取,找到我们需要的价格和元素,这里选择了商品价格、货币类型及运费三类信息:
在这里插入图片描述
将这三类信息元素放入我们的爬虫之中,例如价格price_element = soup.select_one('.x-price-primary span[itemprop="price"]'),然后运行爬虫结果,会发现其输出了所有代理ip的信息以及我们所需要的商品的价格和运费信息:
在这里插入图片描述
更进一步来说,通过这一个物品的信息我们就可以解析整个系列的物品信息,通过把所有的物品信息收集起来,就可以做进一步的价格监控、竞品分析、市场趋势等数据分析,具体完整的代码如下:

from fake_useragent import UserAgent
import requests
from bs4 import BeautifulSoup
import re

# 设置随机的请求头
headers = {'User-Agent': UserAgent().random}

# 代理IP API URL
proxy_api_url = 'http://api.proxy.ipidea.io/getBalanceProxyIp'
params = {
    'num': 100,
    'return_type': 'txt',
    'lb': 1,
    'sb': 0,
    'flow': 1,
    'regions': '',
    'protocol': 'http'
}

# 获取代理IP
response = requests.post(proxy_api_url, headers=headers, params=params, verify=True)
proxy_ip = response.text

# 构建代理字典
proxies = {
    'http': f'https://{proxy_ip}',
    'https': f'https://{proxy_ip}'
}

print(f"Using proxy: {proxy_ip}")

# 目标商品URL
item_url = 'https://www.ebay.com/itm/335217926054'

# 商品信息字典
item_info = {}

# 发送请求获取商品页面HTML
try:
    page_response = requests.get(item_url, proxies=proxies)
    page_response.raise_for_status()  # 检查请求是否成功
    soup = BeautifulSoup(page_response.text, 'html.parser')

    # 解析商品价格
    price_element = soup.select_one('.x-price-primary span[itemprop="price"]')
    item_info['price'] = price_element['content'] if price_element else 'Price not found'

    # 解析货币类型
    currency_element = soup.select_one('.x-price-primary span[itemprop="priceCurrency"]')
    item_info['currency'] = currency_element.text.strip() if currency_element else 'Currency not found'

    # 解析运费
    shipping_label = next((label for label in soup.select('.ux-labels-values__labels') if 'Shipping:' in label.text), None)
    if shipping_label:
        shipping_price_element = shipping_label.find_next_sibling('.ux-textspans--BOLD')
        item_info['shipping_price'] = re.search(r'\d+\.\d+', shipping_price_element.text).group(0) if shipping_price_element else 'Shipping price not found'
    else:
        item_info['shipping_price'] = 'Shipping price not found'

except requests.RequestException as e:
    print(f"An error occurred: {e}")

# 打印商品信息
print(item_info)

总结与展望

在我个人的体验中,是一个非常值得推荐的代理IP服务。它不仅提供了广泛的全球IP资源,而且操作简单,易于上手。通过使用IPIDEA,我能够轻松获取到我需要的数据。这种便捷性和高效性,对于像我这样经常需要进行数据爬取和分析的人来说,是非常宝贵的资源。如果你还在寻找一个可靠的代理IP,是一个值得我们考虑的选择。

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

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

相关文章

大模型入门学习笔记(非常详细)零基础入门到精通,收藏这一篇就够了

一、认识大模型 1.1 从人工智能到大模型的演变 学完本文后,你将能够: 掌握大模型的特点、重要概念以及工作方式 了解大模型的基本概况和产品矩阵 了解大模型,尤其是大语言模型的应用场景和示例 大模型是人工智能领域的一个重要里程碑&a…

C++相关概念和易错语法(23)(set、仿函数的应用、pair、multiset)

1.set和map存在的意义 (1)set和map的底层都是二叉搜索树,可以达到快速排序(当我们按照迭代器的顺序来遍历set和map,其实是按照中序来遍历的,是排过序的)、去重、搜索的目的。 (2&a…

展馆导览系统架构解析,从需求分析到上线运维

在物质生活日益丰富的当下,人们对精神世界的追求愈发强烈,博物馆、展馆、纪念馆等场所成为人们丰富知识、滋养心灵的热门选择。与此同时,人们对展馆的导航体验也提出了更高要求,展馆导览系统作为一种基于室内外地图相结合的位置引…

STM32智能农业监测与控制系统教程

目录 引言环境准备智能农业监测与控制系统基础代码实现:实现智能农业监测与控制系统 4.1 数据采集模块 4.2 数据处理与分析模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:农业监测与优化问题解决方案与优化收尾与总结 1. 引言 智能农…

电脑基础知识 | 电脑的基本组成

电脑作为我们日常工作和娱乐的重要工具,扮演着举足轻重的角色。当我们谈论电脑的基本组成时,其实是在探讨电脑硬件和软件两个核心部分。硬件是电脑看得见、摸得着的物理设备,而软件则是运行在这些硬件之上的程序和指令。两者相辅相成&#xf…

深入浅出mediasoup—WebRtcTransport

mediasoup 提供了多种 transport,包括 WebRtcTransport、PipeTransport、DirectTransport、PlainTransport 等,用来实现不同目的和场景的媒体通信。WebRtcTransport 是 mediasoup 实现与 WebRTC 客户端进行媒体通信的对象,是 mediasoup 最重要…

Electron案例解析——切换主题颜色的案例

效果图 核心 Electron的 nativeTheme.themeSource属性,值是string。有三个参数:system, light 和 dark,用来覆盖、重写Chromium内部的相应的值 Election的api描述值nativeTheme.themeSource被用来覆盖、重写Chromium内部的相应的值system, …

swagger-ui.html报错404

问题1:权限受限无法访问 由于采用的Shiro安全框架,需要在配置类ShiroConfig下的Shiro 的过滤器链放行该页面:【添加:filterChainDefinitionMap.put("/swagger-ui.html", "anon");】 public ShiroFilterFact…

springboot失物招领论坛系统-计算机毕业设计源码56603

目 录 1 绪论 1.1 研究背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2 系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4 系统流程…

QT 信号槽机制

核心函数为 QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type Qt::AutoConnection) 参数为 1.信号发生对象 2.信号发生对象的信号 3.槽对象 4.槽对象的槽函…

CAD框架介绍

1、适用范围:矢量编辑软件如 服装模板软件、CAD软件、绘图软件 2、支持PLT,DXF,PDF,GCode(服装裁割指令)等矢量文件导入 3、支持简易的自动手动排料 4、直线,曲线等编辑功能 5、分页输出绘图指令 6、良好的框架结构:绘图引擎…

单向链表

目录 思维导图: 学习内容: 1. 链表的引入 1.1 顺序表的优缺点 1.1.1 优点 1.1.2 不足 1.1.3 缺点 1.2 链表的概念 1.2.1 链式存储的线性表叫做链表 1.2.2 链表的基础概念 1.3 链表的分类 2. 单向链表 2.1 节点结构体类型 2.2 创建链表 2.…

员工网络监控软件:把控员工网络活动的标尺

在竞争激烈的漩涡之中,企业如同一只不断旋转的陀螺,努力保持着自身的平衡和稳定,而员工的网络活动则是那无形却强大的力量,时刻影响着企业的运转。员工网络监控软件仿佛一根坚固无比的轴心,以其精准的标尺帮助企业实现…

分类模型-逻辑回归和Fisher线性判别分析★★★★

该博客为个人学习清风建模的学习笔记,部分课程可以在B站:【强烈推荐】清风:数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibili 目录 1理论 1.1逻辑回归模型 1.2线性概率模型 1.3线性判别分析 1.4两点分布…

基于区块链的算力交易平台

目录 基于区块链的算力交易平台 核心技术 创新点 算力交易流程和拍卖算法 关键技术 创新点 基于区块链的算力交易平台 核心技术 智能合约: 定义:智能合约是一组情景应对型的程序化规则和逻辑,通过部署在区块链上的去中心化、可信共享的脚本代码实现。作用:智能合…

leetcode10 -- 正则表达式匹配

题目描述: 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 示例 1&#xff1…

【工具】轻松转换JSON与Markdown表格——自制Obsidian插件

文章目录 一、插件简介二、功能详解三、使用教程四、插件代码五、总结 一、插件简介 JsonMdTableConverter是一款用于Obsidian的插件,它可以帮助用户在JSON格式和Markdown表格之间进行快速转换。这款插件具有以下特点: 轻松识别并转换JSON与Markdown表格…

解锁PCIe8516高速数据采集卡应用——超声波无损检测

超声波无损检测是无损检测技术的重要手段之一,由于其信号的高频特性,需要采用高速数据采集设备来采集、记录、分析和处理。 某客户需要使用超声波对钢材进行无损检测,由于声波在钢材中的传播速度很高,(纵波CL的传播速度为5900米/秒…

分布式训练并行策略

1.分布式训练的概念 分布式训练(Distributed Training)是指将机器学习或深度学习模型训练任务分解成多个子任 务,并在多个计算设备上并行地进行训练。 一个模型训练任务往往会有大量的训练样本作为输入,可以利用一个计算设备完成…

【C语言】链式队列的实现

队列基本概念 首先我们要了解什么是队列,队列里面包含什么。 队列是线性表的一种是一种先进先出(First In Fi Out)的数据结构。在需要排队的场景下有很强的应用性。有数组队列也有链式队列,数组实现的队列时间复杂度太大&#x…