目录
- 实际案例:利用代理服务抓取企业信息
- 完整代码
- 运行结果
- 亮数据的技术优势与应用场景
- 产品更新:简化注册流程与智能助手升级
- 立即注册,开启您的数据抓取之旅!
在如今的大数据时代,企业决策越来越依赖于数据分析,而数据的高效获取与处理是确保分析结果准确的重要基础。然而,面对网络反爬虫技术的进步和复杂的法律合规要求,很多企业在采集全球数据时遇到了困难。为了应对这些挑战,本文将介绍一种常见的代理服务技术,并结合实际案例展示其在市场调研和数据采集中的应用。
实际案例:利用代理服务抓取企业信息
以下代码演示了一个简单的爬虫,它通过代理服务访问某网站,获取企业的基本信息。这些数据不仅能够帮助企业了解竞争对手的基本运营情况,还可以作为市场调研的重要依据。
-
导入必要的库
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
: 用于处理时间延迟,尽管在此代码中大部分时间都使用了显式等待而不是静态延时。
-
设置和启动 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 浏览器兼容。
-
访问目标 URL
url = 'https://www.tianyancha.com/company/639627788' driver.get(url)
- 使用
driver.get()
方法打开目标网址,天眼查某个公司页面。
- 使用
-
显式等待并进行交互操作
# 等待并点击第一个按钮 first_button = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, '//*[@id="J_NavTypeLink"]/span')) ) first_button.click()
- 显式等待: 使用
WebDriverWait
和expected_conditions
让代码等待指定元素的出现。 - 例如,首先等待第一个按钮可点击,然后点击该按钮。这里使用了 XPath 来定位按钮。
接下来的操作包括:
- 点击密码登录按钮。
- 点击页面上的第二个按钮。
- 显式等待: 使用
-
登录操作
# 输入用户名和密码 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)
- 勾选隐私政策复选框并提交登录表单。使用
Keys.RETURN
模拟按下回车键。
- 勾选隐私政策复选框并提交登录表单。使用
-
等待页面加载并抓取数据
# 提取参保人数 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()
清理文本中的前后空白字符。
-
打印抓取的数据
for key, value in company_info.items(): print(f'{key}: {value}')
- 将提取到的数据存储在字典
company_info
中,最后遍历字典并打印每个键值对。
- 将提取到的数据存储在字典
-
关闭浏览器
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美金特别试用金!欢迎访问亮数据官网,体验高效的数据抓取服务,助您在数据驱动的竞争中抢占先机!不论是企业还是个人,都可以通过亮数据找到适合的代理解决方案。