相关环境搭建请参照mac 搭建selenium与ChromeDriver环境
selenium 初体验
selenium自动获取百度搜索结果
源码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
browser = webdriver.Chrome()
try:
browser.get('https://www.baidu.com')
input = browser.find_element_by_id('kw')
input.send_keys('Python爬虫')
input.send_keys(Keys.ENTER)
wait = WebDriverWait(browser, 10)
wait.until(EC.presence_of_all_elements_located((By.ID, 'content_left')))
print(browser.current_url)
print(browser.get_cookies())
print(browser.page_source)
finally:
browser.close()

与此同时,终端会将获取到的结果都打印出来
声明浏览器
selenium支持多个浏览器,声明浏览器的方式如下:
源码:
from selenium import webdriver
browser = webdriver.Chrome() # 声明 chrome
browser = webdriver.Firefox() # 声明 Firefox
访问页面
源码:
from selenium import webdriver
browser = webdriver.Chrome() # 声明浏览器
browser.get('https://www.baidu.com') # 访问网页
print(browser.page_source) # 将源码打印到终端
browser.close() # 关闭浏览器
运行脚本,会看到程序自动打开浏览器访问百度,并将源码输出到了终端
查找节点
获取知乎的搜索框节点


源码:
from selenium import webdriver
browser = webdriver.Chrome() # 声明浏览器
browser.get('https://www.zhihu.com') # 访问网页
search_input = browser.find_element_by_id('Popover1-toggle') # 查找节点
print(search_input)
browser.close() # 关闭浏览器
结果
☁ crawler python3 test_selenium.py
<selenium.webdriver.remote.webelement.WebElement (session="bec64b422b99b683ea64133e6e4002d4", element="0.4626614526678319-1")>
通过pycharm,进入browser.find_element_by_id
源码,可看到还有多种方式能获取节点

多节点查找

源码:
from selenium import webdriver
browser = webdriver.Chrome() # 声明浏览器
browser.get('http://36kr.com/') # 访问网页
lis = browser.find_elements_by_class_name('radius') # 根据类名查找节点
print(lis)
browser.close() # 关闭浏览器

节点交互
需求:打开百度首页,在搜索框输入“三体“,然后清空搜索框,再输入“球状闪电”,最后点击搜索按钮
相当于模拟用户的真实操作

源码:
from selenium import webdriver
import time
browser = webdriver.Chrome() # 声明浏览器
browser.get('https://www.baidu.com') # 访问网页
search_input = browser.find_element_by_id('kw') # 获取搜索框
search_input.send_keys('三体') # 将文字填充到搜索框
time.sleep(2)
search_input.clear() # 清空搜索框
search_input.send_keys('球状闪电')
submit = browser.find_element_by_id('su') # 获取提交按钮
submit.click() # 点击提交按钮
time.sleep(2)
browser.close() # 关闭浏览器

更多的节点交互请查看官方文档
网友评论