怎么看出对方是一个无人机高手

作者:王文文

https://weibo.com/u/1644305150

1、看飞机洁净度,如果他的飞机看上去跟刚买来一样,很新很干净。大概率他是个菜鸟,飞的全是easy模式,漆都不会碰掉一点。但如果他的飞机一看脏兮兮的,里面粘的不是草就是土,大概率他是个资深飞手。

2、看飞机牌子,如果对方是普通的大牌子,比如大疆、道通。未必是菜鸟,因为大疆和道通这种太广泛了。但如果对方用的是一个小众品牌,你就要注意了。(P.S: 九十九块钱的玩具不在此处讨论范围……)如果对方用的是自己组装的,不用问。大概率是个高手。

3、看飞机外挂,新手一般是不怎么会往飞机上装东西的,最多贴一些贴纸。但老手经常会往上装各种奇奇怪怪的外挂。比如投掷器什么的。还有一些人会装电池固定器,这种一般都是狠人,因为高速的花飞很容易把电池撞掉,而电池撞掉后图传和指令接收全部完蛋,所以这是一个猛人常备配件。

4、看心态,大部分的官方教程都告诉你“姿态模式”很危险,要避免。但实际很多地方就是没卫星信号,就是得靠手动。你就说你飞不飞吧,不敢飞换人。高手遇到“姿态模式”警告一般都比较淡定,而新手遇到突然的“姿态模式”都会慌。

5、看纪律,高手习惯事前勘探地形,确定航线。事中严格遵守自己的计划,不额外加戏,不搞突发奇想。因为在复杂地形下的商业拍摄,炸机很影响进度。除非你带了一堆的备用飞机和备用电池去完成任务,否则,请遵守纪律,保护好设备,一定要先完成预设任务。

6、看人,喜欢夸夸其谈的,大多比较菜,比如我这种。真正的高手要么沉浸在飞行中,要么在总结经验教学,回顾前面的飞行还有什么改进的地方,哪些区域会丢信号,哪些地方会丢图传……是否有完成雇主的要求……总之,话不多的。当然,如果他正在讲课得另当别论。给新人多讲两句,避免无谓的炸机。好事啊,应该的。

DrissionPage,不用给爬虫装驱动了

DrissionPage是一个基于Python的网页自动化库,它结合了selenium和requests的优点,可以轻松实现网页的自动化操作。DrissionPage的主要特点是其简洁的API设计,使得用户可以很容易地编写代码来实现网页自动化。

特点

  • 简洁的API设计:DrissionPage的API设计非常简洁,用户无需深入了解Selenium的底层实现,也能进行复杂的网页交互。
  • 结合了selenium和requests的优点:既可以实现动态网页的自动化,也可以实现静态网页的自动化。
  • 灵活性:支持多种选择器,包括CSS选择器、XPath选择器等,适应不同的网页结构。
  • 强大的等待机制:内置智能等待,确保元素在操作前已经加载完成。
  • 支持多种浏览器:DrissionPage支持多种浏览器,包括Chrome、Firefox等。

 

​安装

安装DrissionPage非常简单,只需要通过pip安装即可:

pip install drissionpage
 

初始化

在使用DrissionPage之前,需要先进行初始化。可以使用以下代码进行初始化:

from DrissionPage import MixPage
page = MixPage(‘chrome’)
 

这里我们使用Chrome浏览器进行初始化,你也可以使用其他浏览器,例如Firefox。

打开网页

初始化之后,可以使用open_url方法来打开一个网页。

例如,我们可以使用以下代码来打开百度首页:

page.open_url(‘https://www.baidu.com’)
 

查找元素

在打开网页之后,我们通常需要查找网页中的元素。DrissionPage提供了多种方法来查找元素,例如ele、eles、css、xpath等。例如,我们可以使用以下代码来查找百度首页的搜索框:

search_box = page.ele(‘#kw’)
 

这里我们使用ele方法来查找id为kw的元素。

操作元素

在找到元素之后,我们可以对元素进行各种操作,例如输入文本、点击等。例如,我们可以使用以下代码来在百度搜索框中输入文本并搜索:

search_box.send_keys(‘Python’)
page.ele(‘#su’).click()
 

这里我们使用send_keys方法来输入文本,使用click方法来点击搜索按钮。

获取元素信息

在找到元素之后,我们还可以获取元素的各种信息,例如文本、属性等。例如,我们可以使用以下代码来获取百度搜索结果的第一条结果的标题:

title = page.ele(‘.t a’).text
print(title)
 

此外,DrissionPage支持复杂的网页交互,例如填写表单、点击按钮等:

# 填写表单
browser.find_element_by_name(‘username’).send_keys(‘my_username’)
browser.find_element_by_name(‘password’).send_keys(‘my_password’)

# 点击登录按钮
browser.find_element_by_xpath(‘//button[@type=”submit”]’).click()
 

其他示例

DrissionPage可以用于各种网页操作,下面是一些常见的使用示例:

# 处理下拉菜单
browser.find_element_by_id(‘dropdown’).click()
browser.find_element_by_xpath(‘//option[@value=”option-value”]’).click()

# 滚动到页面底部
browser.scroll_to_bottom()

# 获取当前页面的URL
current_url = browser.get_current_url()

# 下拉刷新
page.execute_script(‘window.scrollTo(0, document.body.scrollHeight)’)

# 上传文件
upload_button = page.ele(‘#upload’)
upload_button.send_keys(‘path/to/your/file’)

 

工作原理

DrissionPage的工作原理非常简单。它首先使用requests库来请求网页,然后使用selenium库来加载网页。在加载网页之后,就可以使用selenium的方法来查找元素、操作元素等。

高级用法

DrissionPage还支持多窗口和多标签页操作、自定义等待、处理JavaScript弹窗等高级功能:

切换到新的标签页

browser.open_new_tab()

 

自定义等待

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
wait = WebDriverWait(page.driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, ‘some_id’)))
 

这里我们使用selenium的WebDriverWait和expected_conditions来实现自定义等待。

处理JavaScript弹窗

page.driver.switch_to.alert.accept()
 

这里我们使用switch_to.alert.accept()来处理JavaScript弹窗。

总结

DrissionPage是一个功能强大且易于使用的Python库,它简化了网页自动化操作,使得即使是编程新手也能快速上手。通过本文的介绍,相信你已经对DrissionPage有了基本的了解,并且能够开始使用它来完成你的网络爬虫项目。

附录

  • DrissionPage的相关文档:https://gitee.com/g1879/DrissionPage
  • selenium官方文档:https://www.selenium.dev/documentation/en/
  • requests官方文档:https://requests.readthedocs.io/en/m