使用selenium实现豆瓣电影信息的自动化搜索

因为之前写了一段时间的python,但是因为某些其它的事情导致没写博客,所以趁着新任务还是有些时间做,赶紧把之前学习到的、了解到的东西整理一下,也是比较基础的东西,一是怕自己遗忘;二来则是给没用过selenium模块的朋友作些许参考。


首先我来解释一下python中的selenium模块。它本质上是一个用作web应用程序测试的框架,Selenium框架可以直接在浏览器中运行,就好比真实用户在浏览器中进行‘点击按钮’,‘文字输入’等操作。其运行的时候,就像是有个‘无形的手’在操纵着你的鼠标、键盘等。


接下来我将使用selenium模块在豆瓣电影页面进行某部电影的检索工作, 先把代码贴出来,然后我会针对其中的某些地方进行讲解。

# -- coding: utf-8
from selenium import webdriver
import time

url='https://www.douban.com/'
browser=webdriver.Chrome()
browser.get(url)

#设置隐式等待浏览器加载豆瓣主界面内的frame等元素
browser.implicitly_wait(5)
#使用标签名称定位元素
browser.switch_to.frame(browser.find_elements_by_tag_name('iframe')[0])
#使用xpath解析html文件中的dom树,然后定位元素
bottom=browser.find_element_by_xpath('/html/body/div[1]/div[1]/ul[1]/li[2]')
#模拟点击 '密码登陆按钮' 选择密码登陆
bottom.click()

#根据元素的id信息定位元素
input1=browser.find_element_by_id('username')
#your_account位置应该是自己的豆瓣账号
input1.send_keys('your_account') 

input1=browser.find_element_by_id('password')
#your_password位置应该是自己的豆瓣账号对应的密码信息
input1.send_keys('your_password') 

login_button=browser.find_element_by_class_name('account-form-field-submit ')
#登陆豆瓣,进行'按钮'的模拟点击
login_button.click()

time.sleep(12)

searchInput=browser.find_element_by_id('inp-query')
#检索‘秦时明月之沧海横流 (2020)’这部动漫的信息
searchInput.send_keys('秦时明月之沧海横流 (2020)')   
searchButton=browser.find_element_by_class_name('inp-btn')
searchButton.click()
browser.quit()

其实代码中的注释解释地也比较清楚,在这段代码中selenium模块所完成的工作就是“打开豆瓣主页面—>输入豆瓣账号、密码信息进行豆瓣的登录—>搜索特定节目信息—>退出浏览器”,这些都是selenium模块自动完成的,全程不需要大家进行任何操作。


当然,大家也可以在此基础上进一步探索selenium模块使用,可以学习一下Webdriver模块的使用,比如‘控制浏览器操作’,‘鼠标事件’,‘键盘事件’等。如果后续有时间的话,我会继续补充这篇博客,大家有问题的话可以在评论区交流讨论!

上一篇:VScode常用插件及配置(持续更新)


下一篇:基于Node.js的UI自动化主流框架