这应该是一个比较弱的抓数据的方法,但有时也会用到,记录一下.
browser: firefox
python3: v3.7.4
windows10
准备:
- 安装selenium:
pip install selenium -i Simple Index
- geckodriver下载:
在以下位置下载对应版本的exe放在firefox的安装目录下(我的在C:\Program Files\Mozilla Firefox)
并将firefox的安装位置添加至环境变量path中
常用api主要集中在python安装目录Python\Python37\Lib\site-packages\selenium\webdriver\remote下的这两支文件里
webdriver.py
webelement.py
看看这两支文件的里面的方法后基本使用就一目了然了.
下面对当前使用的常用方法进行说明
- 打开浏览器, 以下这句就会打开浏览器:
browser = webdriver.Firefox()
- 打开指定网页,需要指定url
url = 'www.baidu.com'
browser.get(url)
- 最大、最小化浏览器
browser.minimize_window()
browser.maximize_window()
- 对页面Element的定位,推荐用xpath和link_text定位
实例:browser.find_element_by_xpath('''//*[@id="ext-gen245"]''')
- 对浏览器的常规操作
- 对Element的取值, 有两种
element_obj.get_attribute('value')
element_obj.text
- 设置Element对象的值,即输入值
element_obj.send_keys(*value)
- 判断Element是否被选中或可见的状态
is_display()
is_selected()
is_enable()
- 鼠标双击,要先导入
from selenium.webdriver.common.action_chains import ActionChains # 用于鼠标双击
ActionChains(browser).double_click(element_ojb).perform()
- 滑动屏幕
js = "var q=document.getElementById('ext-gen351').scrollTop=-100" # 这里的100可修改,为滑动距离
browser.execute_script(js)
- 判断一个Element_obj是否存在,当前没有直接的api可用,可以自动写一个func来判断,以下为参考
def isElementExist(find_element_by_x, type='xpath'):
flag = True
try:
if type == 'xpath':
driver.find_element_by_xpath(f'''{find_element_by_x}''')
if type == 'link_name':
driver.find_element_by_link_text(f'{find_element_by_x}')
except:
flag = False
return flag
如果掌握了以上的基本知识点,基本就可以用python对firefox进行操作控制,也不失为一种获取数据的简单方法.