selenium可以驱动真实的浏览器进行执行json代码
一、元素定位
1.导入selenium
from selenium import webdriver
2.创建浏览器操作对象
from selenium import webdriver
driver = webdriver.Chrome()
3.驱动浏览器访问网址
url = 'http://www.jd.com'
driver.get(url)
print(driver.page_source) # page_source 获取网页源码
selenium的元素定位
导入selenium.webdriver.common.by
from selenium.webdriver.common.by import By
驱动浏览器
browser = webdriver.Chrome()
url = 'https://www.baidu.com'
browser.get(url)
find_element('by', 'value')
1.根据id找对象【定位百度一下】
button = browser.find_elements('id', 'su')
button = browser.find_element(By.ID, 'su')
# 两者都可以
print(button)
# [<selenium.webdriver.remote.webelement.WebElement (session="edf29a1ad4c90ddb4f6077c66284bd58", element="A736AF8672F68D0590C330DDB872F1AF_element_5")>]
2.根据标签属性的属性值找对象【定位文本输入框】
button = browser.find_elements('name', 'wd')
button = browser.find_element(By.NAME, 'wd')
# 两者都可以
print(button)
# [<selenium.webdriver.remote.webelement.WebElement (session="9429e100f76aaf970a9840adb2e7711b", element="74AEEB6495876A4AAB2CDB9208428414_element_4")>]
3.find方法的xpath 根据xpath路径获取对象【写xpath路径--定位百度一下】
button = browser.find_element('xpath', '//input[@id="su"]')
button = browser.find_element(By.XPATH, '//input[@id="su"]')
# 两个都可以
print(button)
# <selenium.webdriver.remote.webelement.WebElement (session="a2a460905719e7e148dfe3a641f2e719", element="72BC4533B5E8319E53F8ADA5BF298D9D_element_5")>
4.tag_name方法根据标签名获取对象【标签名--定位文本输入框】
button = browser.find_element(By.TAG_NAME, 'input')
button = browser.find_element('tag name', 'input')
# 两者都可以
print(button)
# <selenium.webdriver.remote.webelement.WebElement (session="3e13c5d62abd423f248cc7c6decb4d49", element="1177DE5CC74B047E9CB0CB43676F9F90_element_5")>
5.find方法的css方法--根据bs4的语法实现【定位百度一下】
button = browser.find_element('css selector', '#su')
button = browser.find_element(By.CSS_SELECTOR, '#su')
# 两者都可以
print(button)
# <selenium.webdriver.remote.webelement.WebElement (session="0907924538d85046e1dc6b50784ab740", element="9D5FC07B4F10F71176AA28B95B478F7C_element_6")>
6.获取当前页面的链接文本
button = browser.find_element('link text', '新闻')
button = browser.find_element(By.LINK_TEXT, '新闻')
# 两者都可以
print(button)
# <selenium.webdriver.remote.webelement.WebElement (session="d3b569cc0f0e01c19c81e9c37b433923", element="6ED663DDA56A80DFC04F85B235E6C852_element_2")>
二、selenium元素信息
1.获取元素属性【获取input标签的class值】
button = browser.find_element('id', 'su')
print(button.get_attribute('class'))
# bg s_btn
2.获取元素标签名
button = browser.find_element('id', 'su')
print(button.tag_name)
# input
3.获取元素文本【获取的并非标签里的value值,而是显示在 >< 中间的文本】
button = browser.find_element('id', 'su')
print(button.text)
# 获取新闻这两个字
a = browser.find_element(By.LINK_TEXT, '新闻')
print(a.text)
#
# 新闻
三、selenium的交互
直接上案例
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 驱动浏览器
browser = webdriver.Chrome()
# 定义访问的网站【eg:百度】
url = 'https://www.baidu.com'
# 跳转到指定的url
browser.get(url)
# 休眠2s
time.sleep(2)
# 定位文本输入框
input = browser.find_element('id', 'kw')
time.sleep(2)
# 输入’周杰伦‘
input.send_keys('周杰伦')
time.sleep(2)
# 定位百度一下
button = browser.find_element('id', 'su')
# 点击百度一下
button.click()
time.sleep(2)
# 将浏览器滑到底部【固定写法】
bottom = 'document.documentElement.scrollTop=100000'
browser.execute_script(bottom)
time.sleep(2)
# 定位下一页的按钮
next = browser.find_element('xpath', '//a[@class="n"]')
# 点击下一页
next.click()
time.sleep(2)
# 返回上一页
browser.back()
time.sleep(2)
# 再返回下一页
browser.forward()
time.sleep(2)
# 退出
browser.quit()
个人觉得对我自己有用的链接
http://t.csdn.cn/ZVnDS【侵权请联系我,我会删除】