python学习笔记 selenium

一.selenium
是一个强大的python库,它可以用几行代码,控制浏览器,做出自动打开、输入、点击等操作,就像是有一个真正的用户在操作一样。

1.本地环境的浏览器设置:

from selenium import webdriver #从selenium库中调用webdriver模块
driver = webdriver.Chrome() # 设置引擎为Chrome,真实地打开一个Chrome浏览器

2.获取数据:

import time
# 本地Chrome浏览器设置方法
from selenium import webdriver #从selenium库中调用webdriver模块
driver = webdriver.Chrome() # 设置引擎为Chrome,真实地打开一个Chrome浏览器

driver.get('URL') # 打开网页
time.sleep(1)
driver.close() # 关闭浏览器

selenium提取数据的方法:

方法 作用
find_element_by_tag_name 通过元素的标签名称选择
find_element_by_class_name 通过元素的class属性选择
find_element_by_id 通过元素的id选择
find_element_by_name 通过元素的name属性选择
find_element_by_link_text 通过链接文本获取超链接
find_element_by_partial_link_text 通过链接的部分文本获取超链接
# 以下方法都可以从网页中提取出'你好,蜘蛛侠!'这段文字

find_element_by_tag_name:通过元素的名称选择
# 如

你好,蜘蛛侠!

# 可以使用find_element_by_tag_name('h1') find_element_by_class_name:通过元素的class属性选择 # 如

你好,蜘蛛侠!

# 可以使用find_element_by_class_name('title') find_element_by_id:通过元素的id选择 # 如

你好,蜘蛛侠!

# 可以使用find_element_by_id('title') find_element_by_name:通过元素的name属性选择 # 如

你好,蜘蛛侠!

# 可以使用find_element_by_name('hello') #以下两个方法可以提取出超链接 find_element_by_link_text:通过链接文本获取超链接 # 如你好,蜘蛛侠! # 可以使用find_element_by_link_text('你好,蜘蛛侠!') find_element_by_partial_link_text:通过链接的部分文本获取超链接 # 如你好,蜘蛛侠! # 可以使用find_element_by_partial_link_text('你好')

提取多个数据的方法:把上面所有方法中的element换成复数elements就好了。

3.selenium解析与提取数据:

from selenium.webdriver.chrome.options import Options # 从options模块中调用Options类
import time
from bs4 import BeautifulSoup

chrome_options = Options() # 实例化Option对象
chrome_options.add_argument('--headless') # 对浏览器的设置
driver = RemoteWebDriver("http://chromedriver.python-class-fos.svc:4444/wd/hub", chrome_options.to_capabilities()) # 声明浏览器对象

4.自动操作浏览器:

.send_keys() # 模拟按键输入,自动填写表单
.click() # 点击元素
.clear() #清除元素内容

案例:

# 本地Chrome浏览器设置方法
from selenium import webdriver # 从selenium库中调用webdriver模块
import time # 调用time模块
driver = webdriver.Chrome() # 设置引擎为Chrome,真实地打开一个Chrome浏览器

driver.get('https://localprod.pandateacher.com/python-manuscript/hello-spiderman/') # 访问页面
time.sleep(2) # 暂停两秒,等待浏览器缓冲

teacher = driver.find_element_by_id('teacher') # 找到【请输入你喜欢的老师】下面的输入框位置
teacher.send_keys('吴枫') # 输入文字
assistant = driver.find_element_by_name('assistant') # 找到【请输入你喜欢的助教】下面的输入框位置
assistant.send_keys('都喜欢') # 输入文字
button = driver.find_element_by_class_name('sub') # 找到【提交】按钮
button.click() # 点击【提交】按钮
time.sleep(1)
driver.close() # 关闭浏览器

爬取QQ音乐中周杰伦的歌曲评论:

# 教学系统的浏览器设置方法
from selenium import webdriver 
from bs4 import BeautifulSoup
import time

chrome_options = Options() # 实例化Option对象
chrome_options.add_argument('--headless') # 对浏览器的设置
driver = RemoteWebDriver("http://chromedriver.python-class-fos.svc:4444/wd/hub", chrome_options.to_capabilities()) # 声明浏览器对象

driver.get('https://y.qq.com/n/yqq/song/000xdZuV2LcQ19.html') # 访问页面
time.sleep(2)

button = driver.find_element_by_class_name('js_get_more_hot') # 根据类名找到【点击加载更多】
button.click() # 点击
time.sleep(2) # 等待两秒

pageSource = driver.page_source # 获取Elements中渲染完成的网页源代码
soup = BeautifulSoup(pageSource,'html.parser')  # 使用bs解析网页
comments = soup.find('ul',class_='js_hot_list').find_all('li',class_='js_cmt_li') # 使用bs提取元素
print(len(comments)) # 打印comments的数量

for comment in comments: # 循环
    sweet = comment.find('p') # 提取评论
    print ('评论:%s\n ---\n'%sweet.text) # 打印评论
driver.close() # 关闭浏览器 # 关闭浏览器
# 本地Chrome浏览器的静默默模式设置:
from selenium import  webdriver #从selenium库中调用webdriver模块
from selenium.webdriver.chrome.options import Options # 从options模块中调用Options类

chrome_options = Options() # 实例化Option对象
chrome_options.add_argument('--headless') # 把Chrome浏览器设置为静默模式
driver = webdriver.Chrome(options = chrome_options) # 设置引擎为Chrome,在后台默默运行

你可能感兴趣的:(Python)