web工具:selenium

简述:

  selenium第三方库,可以通过webdriver模块创建浏览器对象,用代码模拟浏览器指令,并调用真实浏览器进行操作

    selenium库--------------driver-------------------真实浏览器

优点:

   使用浏览器对象访问url,获取到的是渲染完成的页面数据,如需要Ajax、js动态加载的数据,也可以获得

准备:

  1.  下载driver,新版浏览器将driver剥离了,所以需要下载本地某浏览器对应版本的driver

    如,本地有Chrome浏览器,需要下载对应版本的ChromeDriver

    下载地址:https://npm.taobao.org/mirrors/chromedriver/

  2.  将driver解压的.exe文件放到python主目录下scripts文件夹下即可(Windows)

使用:

from selenium import webdriver

# 1. 创建浏览器
mydriver = webdriver.Chrome()

# 2. 调用浏览器,发送请求
mydriver.get('http://www.lrts.me')

# 3. 保存图像(注意:只截取浏览器当前大小的截图, 如果浏览器为窗口模式,也只截取当前窗口大小的图像)
mydriver.save_screenshot('test.png')

# 4. 获取页面数据
html = mydriver.page_source

# 5. 找到页面中的输入框(此处介绍3种方式)
# <input type="text" name="passwd" id="passwd-id" />
element1 = mydriver.find_element_by_id("passwd-id")
element2 = mydriver.find_element_by_name("passwd")
element3 = mydriver.find_element_by_xpath("//input[@id='passwd-id']")

# 6. 输入内容
element1.send_keys("some text")

# 7. 清除输入内容
element1.clear()

# 8. 提交
element1.click()

# 9.1 解析数据: 使用class属性来定位
#   a. 要找该标签的父标签的class属性,没有就继续向上找
#   b. 获取到的为数据对象
data_objs1 = mydriver.find_elements_by_class_name('h-category-item')
content_list = []
for i in data_objs1:
    content_list.append(i.text)
print(content_list)


# 9.2 解析数据 使用xpath来定位
# 1. find_elements_by_xpath解析所有符合xpath的数据,指到最后一个标签即可
# 2. 获取到的是多个数据对象
xpath = "//li[@class='h-category-item']/a/span"
data_objs2 = mydriver.find_elements_by_xpath(xpath)
data_list = []
for i in data_objs2:
    data_list.append(i.text)
print(data_list)


while True:
    instruct = input("请输入指令: ")
    if instruct == 'quit':
        mydriver.quit()
    elif instruct == 'break':
        break

实例:

  1. 打开懒人听书页面

  2. 获取输入框,输入‘斗破苍穹’

  3. 获取搜索按钮,并点击

from selenium import webdriver

# 1. 创建浏览器
mydriver = webdriver.Chrome()

# 2. 调用浏览器,发送请求
mydriver.get('http://www.lrts.me')

# 3. 获取页面数据
html = mydriver.page_source

# 4. 找到页面中的输入框
tag_input_xpath = "//div[@class='g-search-b clearfix']/input"
element1 = mydriver.find_element_by_xpath(tag_input_xpath)

# 清除输入内容
# element.clear()

# 5. 获取提交,并点击
click_class_name = 'g-search-icon'
element2 = mydriver.find_element_by_class_name(click_class_name)
element2.click()

 

    

posted @ 2020-05-27 19:04  黑无常  阅读(205)  评论(0)    收藏  举报