程序员

2018年python3与selenium教程第1节

2018-08-30  本文已影响507人  闲睡猫

相关环境搭建请参照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() # 关闭浏览器
节点交互

更多的节点交互请查看官方文档

上一篇下一篇

猜你喜欢

热点阅读