亮数据——助力全球数据抓取的高效代理平台

目录

    • 实际案例:利用代理服务抓取企业信息
      • 完整代码
      • 运行结果
    • 亮数据的技术优势与应用场景
    • 产品更新:简化注册流程与智能助手升级
    • 立即注册,开启您的数据抓取之旅!

在如今的大数据时代,企业决策越来越依赖于数据分析,而数据的高效获取与处理是确保分析结果准确的重要基础。然而,面对网络反爬虫技术的进步和复杂的法律合规要求,很多企业在采集全球数据时遇到了困难。为了应对这些挑战,本文将介绍一种常见的代理服务技术,并结合实际案例展示其在市场调研和数据采集中的应用。

实际案例:利用代理服务抓取企业信息

以下代码演示了一个简单的爬虫,它通过代理服务访问某网站,获取企业的基本信息。这些数据不仅能够帮助企业了解竞争对手的基本运营情况,还可以作为市场调研的重要依据。

  1. 导入必要的库

    import re
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    import time
    
    • re: 用于正则表达式匹配,在代码中没有使用,但在一些数据处理任务中常见。
    • selenium: 这是自动化网页操作的核心库。
      • webdriver: 用于启动和控制浏览器的对象。
      • Service: 用于设置和管理 ChromeDriver 的服务。
      • By: 用于定位网页元素(如按 XPath、CSS 选择器等)。
      • Keys: 模拟键盘操作,例如按回车键。
      • WebDriverWait: 用于显式等待,等待某个元素加载完成。
      • expected_conditions as EC: 通过预期条件来控制 WebDriverWait,确保在执行操作前页面元素已完全加载。
    • time: 用于处理时间延迟,尽管在此代码中大部分时间都使用了显式等待而不是静态延时。
  2. 设置和启动 ChromeDriver

    service = Service(executable_path=r'D:\google download\chromedriver-win64\chromedriver-win64\chromedriver.exe')
    driver = webdriver.Chrome(service=service)
    
    • 这里通过指定 ChromeDriver 路径来启动一个 Chrome 浏览器实例。
    • executable_path 是 ChromeDriver 的安装路径,确保 ChromeDriver 版本与 Chrome 浏览器兼容。
  3. 访问目标 URL

    url = 'https://www.tianyancha.com/company/639627788'
    driver.get(url)
    
    • 使用 driver.get() 方法打开目标网址,天眼查某个公司页面。
  4. 显式等待并进行交互操作

    # 等待并点击第一个按钮
    first_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, '//*[@id="J_NavTypeLink"]/span'))
    )
    first_button.click()
    
    • 显式等待: 使用 WebDriverWaitexpected_conditions 让代码等待指定元素的出现。
    • 例如,首先等待第一个按钮可点击,然后点击该按钮。这里使用了 XPath 来定位按钮。

    接下来的操作包括:

    • 点击密码登录按钮。
    • 点击页面上的第二个按钮。
  5. 登录操作

    # 输入用户名和密码
    username_field = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, '//*[@id="mobile"]'))
    )
    password_field = driver.find_element(By.XPATH, '//*[@id="password"]')
    
    # 输入实际账号和密码
    username_field.send_keys('账号')
    password_field.send_keys('密码')
    
    • 显式等待用户名输入框的加载,然后填写用户名和密码。
    • 这些账号信息需要替换为实际的登录凭证。
  6. 同意隐私政策并提交

    # 勾选隐私政策复选框
    privacy_policy_checkbox = driver.find_element(By.XPATH, '//*[@id="agreement-checkbox-account"]')
    privacy_policy_checkbox.click()
    
    # 使用回车提交
    password_field.send_keys(Keys.RETURN)
    
    • 勾选隐私政策复选框并提交登录表单。使用 Keys.RETURN 模拟按下回车键。
  7. 等待页面加载并抓取数据

    # 提取参保人数
    insured_num_element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, '//*[@id="page-root"]/div[3]/div[1]/div[4]/div/div[3]/div[2]/div[2]/div[1]/div/div[2]/table/tbody/tr[8]/td[2]'))
    )
    company_info['参保人数'] = insured_num_element.text.strip()
    
    • 提取公司信息: 代码继续使用显式等待定位元素并提取信息。
    • 通过 XPath 定位到页面中的表格,提取公司 参保人数法定代表人电话注册资本 等数据。
    • 使用 text.strip() 清理文本中的前后空白字符。
  8. 打印抓取的数据

    for key, value in company_info.items():
        print(f'{key}: {value}')
    
    • 将提取到的数据存储在字典 company_info 中,最后遍历字典并打印每个键值对。
  9. 关闭浏览器

    driver.quit()
    
    • 操作完成后,调用 driver.quit() 关闭浏览器并释放资源。

完整代码

import re
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# 设置 ChromeDriver 路径
service = Service(executable_path=r'D:\google download\chromedriver-win64\chromedriver-win64\chromedriver.exe')

# 启动 Chrome WebDriver
driver = webdriver.Chrome(service=service)

# 访问 URL
url = 'https://www.tianyancha.com/company/639627788'
driver.get(url)

# 使用显式等待代替 time.sleep
try:
    # 等待并点击第一个按钮
    first_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, '//*[@id="J_NavTypeLink"]/span'))
    )
    first_button.click()

    # 等待并点击密码登录按钮
    login_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, '//*[@id="web-content"]/div/div/div/div/div[2]'))
    )
    login_button.click()

    # 等待并点击第二个按钮
    second_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, '//*[@id="web-content"]/div/div/div/div/div[6]/div/div[1]/div[2]'))
    )
    second_button.click()

except Exception as e:
    print("操作失败:", e)

# 输入用户名和密码
try:
    username_field = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, '//*[@id="mobile"]'))
    )
    password_field = driver.find_element(By.XPATH, '//*[@id="password"]')

    # 输入实际账号和密码
    username_field.send_keys('账号')
    password_field.send_keys('密码')

    # 勾选隐私政策复选框
    privacy_policy_checkbox = driver.find_element(By.XPATH, '//*[@id="agreement-checkbox-account"]')
    privacy_policy_checkbox.click()

    # 使用回车提交
    password_field.send_keys(Keys.RETURN)

    # 等待页面加载完成
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'company-header-content'))
    )
except Exception as e:
    print("输入用户名或密码时出错:", e)

# 存储提取的数据
company_info = {}

try:
    time.sleep(30)
    # 提取参保人数
    insured_num_element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, '//*[@id="page-root"]/div[3]/div[1]/div[4]/div/div[3]/div[2]/div[2]/div[1]/div/div[2]/table/tbody/tr[8]/td[2]'))
    )
    company_info['参保人数'] = insured_num_element.text.strip()

    # 提取法定代表人
    legal_representative_element = driver.find_element(By.XPATH, '//*[@id="page-root"]/div[3]/div[1]/div[4]/div/div[3]/div[2]/div[2]/div[1]/div/div[2]/table/tbody/tr[2]/td[2]/div/div/div/div[2]/div/a')
    company_info['法定代表人'] = legal_representative_element.text.strip()

    # 提取电话
    phone_element = driver.find_element(By.XPATH, '//*[@id="page-root"]/div[3]/div/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[2]/div[1]/span[2]/span')
    company_info['电话'] = phone_element.text.strip()

    # 提取注册资本
    registered_capital_element = driver.find_element(By.XPATH, '//*[@id="page-root"]/div[3]/div[1]/div[4]/div/div[3]/div[2]/div[2]/div[1]/div/div[2]/table/tbody/tr[4]/td[4]/div')
    company_info['注册资本'] = registered_capital_element.text.strip()

except Exception as e:
    print("提取数据时出错:", e)

# 打印提取到的数据
for key, value in company_info.items():
    print(f'{key}: {value}')

# 关闭浏览器
driver.quit()

运行结果

在这里插入图片描述
通过结合亮数据的代理服务,我们可以使该爬虫程序在访问大量数据时更加稳定,不受网络封禁的影响。亮数据的全球代理IP网络(即日起,注册新用户,可以获得2+5共7美金免费试用产品的机会。 )确保用户可以灵活地从不同地区采集数据,规避IP封禁带来的阻碍。同时,亮数据的智能管理系统能够实时更换IP,并为用户提供智能助手支持,帮助其快速上手并解决技术难题。

亮数据的技术优势与应用场景

通过使用全球代理服务,我们可以确保数据抓取过程的稳定性,尤其是在需要跨境访问数据时。代理网络能够帮助用户避免因频繁访问相同目标而被封禁。同时,智能管理系统能自动更换IP,提升抓取效率。

在这里插入图片描述

适用场景:灵活应对多样化的数据需求

  • 市场调研与竞争情报: 采集竞争对手的产品、价格和促销信息。
  • 金融数据抓取与分析: 获取实时市场行情、汇率等数据。
  • 品牌保护与知识产权管理: 监控电商平台上是否存在假冒伪劣产品。

产品更新:简化注册流程与智能助手升级

为了提升用户体验,亮数据近期对产品做了一系列的更新,其中包括注册流程的简化和智能助手的升级。新客户首次充值优惠,充多少送多少,最高500美金。

1.一键注册,立即上手

在这里插入图片描述
亮数据的注册流程现已简化,普通用户无需复杂的审核流程,仅需填写基础信息即可快速注册并开始使用。注册页面经过优化,用户可以在短短几秒钟内完成注册,点击验证邮件即可进入系统,大幅提升了注册效率。

2.智能助手升级,随时提供帮助

在这里插入图片描述
亮数据的智能助手内嵌了ChatGPT技术,能够帮助用户解答各种关于代理设置的问题。用户可以直接用中文提问,获得即时帮助。智能助手不仅提供基本的操作指导,还能根据用户的问题提供深度建议,确保即便是复杂的数据抓取任务,用户也能找到适合的解决方案。

3.丰富的技术支持

为了确保用户能够顺利使用产品,亮数据提供了丰富的技术支持,包括帮助文档、操作视频、客户服务等。用户可以通过官网的技术支持页面,找到所需的资源,学习如何充分利用亮数据的强大功能。

数据中心代理和静态代理,最近做了大幅的价格和收费模式的调整,颇具竞争力,有兴趣的 可以上公司主页了解详情。以上充值赠送活动,针对数据中心和静态代理同样有效!

立即注册,开启您的数据抓取之旅!

随着数据需求的不断增加,亮数据也在不断创新,计划未来继续扩大IP资源库,同时引入更先进的代理管理系统。亮数据还将进一步优化用户体验,特别是在智能助手方面,通过增加更多的自动化功能,帮助用户简化复杂的代理设置,真正实现数据抓取的高效化和智能化。

亮数据为此次内容提供额外优惠:现在注册可以享受以上所有的价格优惠的同时,再送15美金特别试用金!欢迎访问亮数据官网,体验高效的数据抓取服务,助您在数据驱动的竞争中抢占先机!不论是企业还是个人,都可以通过亮数据找到适合的代理解决方案。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用win32com将ppt(x)文件转换为pdf文件

本文来记录下如何使用win32com将ppt(x)文件转换为pdf文件 文章目录 win32com概述win32com优缺点代码实例本文小结 win32com概述 Pywin32 是一个用于与 Microsoft Windows 操作系统交互的 Python 扩展模块,它提供了对多个 Windows API 的访问,包括对 Mic…

Win11专业版Docker安装、配置记录

零,系统环境配置 首先,安装Docker需要系统支持开启硬件虚拟化及Hyper-V功能,所以这里需要Win10/11的专业版,这样才能进行Docker for Windows软件安装。 1,硬件虚拟化 至于如何开启硬件虚拟化,自行百度即…

[JAVAEE] 面试题(四) - 多线程下使用ArrayList涉及到的线程安全问题及解决

目录 一. 多线程下使用ArrayList 1.1. 自行判断加锁 1.2 使用Collections.synchronizedList()套壳加锁 1.3 CopyOnWriteArrayList类 二. 总结 一. 多线程下使用ArrayList 多线程下使用ArrayList会涉及到线程安全问题, 例如: public static void main(String[] args) thro…

idea项目运行时 java: 错误: 不支持发行版本 21

java项目运行时,同样的项目别的都是正常运行,单个这个项目一直报 java: 错误: 不支持发行版本 21, 报错的解释 这个错误表明你正在尝试使用Java编译器编译一个类,但是编译器遇到了一个它不支持的版本号,在这个上下文…

kafka和Flume的整合

目录 一、Kafka作为Source 【数据进入到kafka中,抽取出来】 1、在我的flume的conf文件夹下,有个myconf文件夹: 2、 创建一个flume脚本文件: kafka-memory-logger.conf 3、测试 二、kafka作为Sink 【数据从别的地方抽取到kafka里…

Tomcat漏洞利用工具-TomcatScanPro(二)

项目地址 https://github.com/lizhianyuguangming/TomcatScanPro 简介 本项目是一个针对 Tomcat 服务的弱口令检测、漏洞检测以及本地文件包含(LFI)攻击工具。除了支持 CVE-2017-12615 漏洞的多种利用方式外,新版本还集成了 CNVD-2020-104…

【2024软考架构案例题】你知道 Es 的几种分词器吗?Standard、Simple、WhiteSpace、Keyword 四种分词器你知道吗?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…

Web认证机制 Cookie、Token、Session、JWT、OAuth2 解析

标题 一、Cookie二、Session三、Token四、JWTSSO(单点登录) 五、OAuth2如何设计权限系统区别总结 Cookie、Token、Session 和 JWT 都是在 Web 开发中常用的身份验证和授权技术,它们各有优缺点,适用于不同的场景。 Cookie 简单易用…

GEE遥感云大数据在灾害、水体与湿地领域典型案例实践:洪涝灾害、水体质量、河道轮廓、地下水变化监测;洪水敏感性和风险模拟;红树林遥感制图等

以Earth Engine(GEE)、PIE-Engine为代表全球尺度地球科学数据(尤其是卫星遥感数据)在线可视化计算和分析云平台应用越来越广泛。GEE平台存储和同步遥感领域目前常用的MODIS、Landsat和Sentinel等卫星影像、气候与天气、地球物理等…

安装一键式重置密码插件(Linux)-CloudResetPwdAgent

为了保证使用镜像创建的裸金属服务器可以实现一键式密码重置功能,建议您在制作镜像时安装重置密码插件“CloudResetPwdAgent”。 前提条件 需保证虚拟机根目录可写入,且剩余空间大于600MB。 1.下载插件包 华为云已提供下载包连接 在PC机里下载好软件…

力扣-Mysql-3328-查找每个州的城市 II(中等)

一、题目来源 3328. 查找每个州的城市 II - 力扣(LeetCode) 二、数据表结构 表:cities ---------------------- | Column Name | Type | ---------------------- | state | varchar | | city | varchar | ----------------…

深度学习神经网络创新点方向

一、引言 深度学习神经网络在过去几十年里取得了令人瞩目的成就,从图像识别、语音处理到自然语言理解等众多领域都有广泛应用。然而,随着数据量的不断增长和应用场景的日益复杂,对神经网络的创新需求也愈发迫切。本文将探讨深度学习神经网络…

SpringBoot 3.3.5 试用CRaC,启动速度提升3到10倍

文章目录 一 CRaC是什么二 CRaC的原理三 CRaC 的应用场景四 支持版本五 实践 今天和小伙伴们来聊一个稍微新一点的技术话题—CRaC。 CRaC(Coordinated Restore at Checkpoint,检查点协调恢复)是一个 OpenJDK 项目,旨在解决 Java 应…

大模型本地部署:Ollama+MaxKB 部署本地知识库

前言 本文我们介绍另外一种部署本地知识库的方案: Ollama MaxKB 相对来说,容易安装且功能较完善,30 分钟内即可上线基于本地大模型的知识库问答系统,并嵌入到第三方业务系统中。 缺点是如果你的电脑配置不高,问题…

Nuxt.js 应用中的 schema:beforeWrite 事件钩子详解

title: Nuxt.js 应用中的 schema:beforeWrite 事件钩子详解 date: 2024/11/14 updated: 2024/11/14 author: cmdragon excerpt: schema:beforeWrite 钩子是 Vite 提供的一个功能强大的生命周期钩子,允许开发者在 JSON Schema 被写入之前执行自定义操作。利用这个钩子,您可以…

Scrapy爬取heima论坛所有页面内容并保存到数据库中

前期准备: Scrapy入门_win10安装scrapy-CSDN博客 新建 Scrapy项目 scrapy startproject mySpider03 # 项目名为mySpider03 进入到spiders目录 cd mySpider03/mySpider03/spiders 创建爬虫 scrapy genspider heima bbs.itheima.com # 爬虫名为heima &#…

MacBook 下载vscode不能被解压及打开的解决方案

mac 下载vscode不能被解压解决方案如下 1.下载全能解压 进行解压 解压完如果提示 已损坏,无法打开。 您应该将它移到废纸篓 2.允许“任何来源”开启 开启终端输入 sudo spctl --master-disable回车 3. 扩展文件属性 先输入 sudo xattr -r -d com.apple.quaran…

【AI声音克隆整合包及教程】第二代GPT-SoVITS V2:技术、应用与伦理思考

一、引言 在当今科技迅速发展的时代,声音克隆技术成为人工智能领域的一个备受瞩目的分支。GPT-SoVITS V2作为一种声音克隆工具,正逐渐进入人们的视野,它在多个领域展现出巨大的潜力,同时也引发了一系列值得深入探讨的问题。本文旨…

DAY113代码审计-PHPTP框架微P系统漏审项目等

一、环境安装 导入数据 Debug 版本信息收集 一、不安全写法的sql注入(拼接写法绕过预编译机制) 1、Good.php的不安全写法 2、查找可以参数 3、找路由关系 application/index/controller/Goods.php http://172.19.1.236:8833/index.php/index/goods/aj…

35.3K+ Star!PhotoPrism:一款基于AI的开源照片管理工具

PhotoPrism 简介 PhotoPrism[1] 是一个为去中心化网络设计的AI照片应用,它利用最新技术自动标记和查找图片,实现自动图像分类与本地化部署,你可以在家中、私有服务器或云端运行它。 项目特点 主要特点 浏览所有照片和视频,无需担心RAW转换、重复项或视频格式。 使用强大的…