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

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

作为一名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.rhkb.cn/news/382667.html

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

相关文章

工程视角:数据结构驱动的应用开发--字典(dictionary),列表(list)与实体

这里写目录标题 业务业务场景流程分析 实现数据访问层(DAL)业务逻辑层(BLL)用户界面层(UI)工具类 设计思路为什么抽出工具类关于U层使用字典的好处工程视角 业务 业务场景 在一个金融应用系统中&#xff0c…

【益智问题】十三球称重

十三球称重 问题描述解决方案 问题描述 有13个外表一模一样的小球产品,其中有一个是次品,其质量与其他12个略有差别,但不知道是重还是轻。这13个球上都有标号,现在给你-架天平,只能使用三次,把这个次品小球…

Elasticsearch:Golang ECS 日志记录 - zap

ECS 记录器是你最喜欢的日志库的格式化程序/编码器插件。它们可让你轻松地将日志格式化为与 ECS 兼容的 JSON。 编码器以 JSON 格式记录日志,并在可能的情况下依赖默认的 zapcore/json_encoder。它还处理 ECS 错误格式的错误字段记录。 默认情况下,会添…

58、主从复制数据库+读写分离

mysql的主从复制和读写分离(面试问原理) mysql的主从复制和读写分离: 主从复制 面试必问 主从复制的原理。 读写分离,MHA 一、主从复制 1.1、主从复制的模式: 1、mysql的默认模式: 异步模式&#xf…

Three.js 官方文档学习笔记

Address:Three.js中文网 (webgl3d.cn) Author:方越 50041588 Date:2024-07-19 第一个3D案例—创建3D场景 创建3D场景对象Scene: const scene new THREE.Scene(); 创建一个长方体几何对象Geometry: const geomet…

FTP、NFS、SAMBA系统服务

⼀、rsync托管xinetd 1 、为什么要进⾏服务托管 独⽴服务:独⽴启动脚本 ssh ftp nfs dns ... 依赖服务 : 没有独⽴的启动脚本 rsync telnet 依赖 xinetd 服务(独⽴服务) 2 、如何将 rsync 托管给 xinetd 服务去管理? 第⼀步&am…

VMware中Ubuntu磁盘空间的清理

最近发现Ubuntu占用空间过大,在网上找了一些方法,在这里总结一下。 1.删除快照 把不需要的快照删除,但要注意删除快照可能会影响到后续的快照链。每个快照依赖于前面的快照。如果删除一个中间快照,虚拟机可能无法找到完整的差异…

leetcode 513.找树左下角的值

1.题目要求: 代码块: 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。2.此题思路: 1.创建队列,出队函数和入队函数: //创建队列 typedef struct queuet{struct TreeNode* value;struct queue* n…

IB user verbs介绍

本文来自对内核源代码文档/Documentation/infiniband/user_verbs.rst的翻译和理解。 在Infiniband设备帮助下,跨计算机的两个进程可以相互访问对方的虚地址空间。在Linux操作系统上,支持进程能直接访问本地Infiniband设备的资源,从而实现跨机…

TeamViewer手机端APP提示:请先验证账户

当你在手机端下载安装了TeamViewerAPP后,需要你先登录个人账号,然后还会要求你验证账户,同时跳转到一个网址中,但是这个网址并没有自动跳转到验证账户的位置。 解决办法: 在手机浏览器中进入下面这个网址:…

鸿蒙语言基础类库:【@system.vibrator (振动)】

振动 说明: 本模块首批接口从API version 4开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。从API Version 8开始,该接口不再维护,推荐使用新接口[ohos.vibrator]。该功能使用需要对应硬件支持,仅支持…

VMware虚拟机无法访问互联网

一、什么情况下需要访问互联网 在某些情况下,VMware虚拟机需要通过访问互联网去获取外部资源,例如进行yum安装或者wget拉取操作等等。 二、处理方法 2.1.检查虚拟机网络模式和服务状态 虚拟机的网络模式需要使用 NAT 模式。 VMware NAT Service服务…

Delphi 11.2 配置Android SDK 环境

打开 Delphi 11 点击 Tools–Options… 然后点击 Deployment–SDK Manager–Add… 这里如果配置64位就选 Android 64-bit,如果配置32位就选 Android 32-bit 点击 Select an SDK version–Add New… 有警告图标的就是有问题的项,需要手动更新一下&#xf…

微信小程序开发:项目程序代码构成

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

PostgreSQL创建表和自增序列

一、创建表: 注意: 1、在mysql没有序列的概念,id自增通过auto_increment实现; 2、pgsql没有auto_increment的概念,如何实现id自增?有两种方式: 方式一:创建序列,绑定…

Android lmkd机制详解

目录 一、lmkd介绍 二、lmkd实现原理 2.1 工作原理图 2.2 初始化 2.3 oom_adj获取 2.4 监听psi事件及处理 2.5 进程选取与查杀 2.5.1 进程选取 2.5.2 进程查杀 三、关键系统属性 四、核心数据结构 五、代码时序 一、lmkd介绍 Android lmkd采用epoll方式监听linux内…

SpringBoot连接PostgreSQL+MybatisPlus入门案例

项目结构 一、Java代码 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://mave…

客户案例 | 识货基于向量检索服务 Milvus 版搭建电商领域的向量数据检索平台

阿里云的Milvus服务以其性能稳定和功能多样化的向量检索能力&#xff0c;为识货团队在电商领域的向量检索场景中搭建业务系统提供了强有力的支持。该服务的分布式扩展能力不仅可靠&#xff0c;而且能够适应日益增长的数据规模。 一、客户介绍 识货&#xff0c;成立于2012年6月…

Selenium之execute_script()方法执行js脚本

目录 场景应用和使用 页面滚动 获取返回值 返回JavaScript定位的元素对象 修改元素属性 弹出提示框 场景应用和使用 在自动化测试中&#xff0c;部分场景无法使用自动化Selenium原生方法来进行测试&#xff1a; 滚动到某个元素&#xff08;位置&#xff09; 修改…

水利行业的智慧转型之路:分析智慧水利的核心要素与优势,展望其在提升水资源利用效率、保障水安全方面的广阔前景

目录 引言 一、智慧水利的核心要素 1. 物联网技术 2. 大数据与云计算 3. 人工智能与机器学习 4. 移动互联网与GIS技术 5. 标准化与信息安全 二、智慧水利的优势 1. 提高水资源利用效率 2. 增强水灾害防御能力 3. 提升水环境治理水平 4. 促进水利服务智能化 三、展望…