爬虫中selenium提取数据

每日分享:

一个人的行为和品格。能够给另一个人带来的心灵的震撼和扭转,是这个世界上最强大的力量吧,它唤醒了朴福子心底尚存的良知

    了解driver对象的常用属性和方法 掌握driver对象定位标签元素获取标签对象的方法 掌握标签对象提取文本和属性值的方法

一、driver对象的常用属性和方法

在使用selenium过程中,实例化driver对象后,driver对象有一些常用的属性和方法
  1. driver.page_source:当前标签页浏览器渲染之后的网页代码
  2. driver.current_url:当前标签页的url(响应对应的url)
  3. driver.close():关闭当前标签页,如果只有一个标签页则关闭整个浏览器
  4. driver.quit():关闭浏览器
  5. driver.forward():页面前进
  6. driver.back():页面后退
  7. driver.title:页面标题
from selenium import webdriver

url = http://www.baidu.com
# 创建一个driver对象
driver = webdriver.Chrome()
# 发送请求
driver.get(url)

print(driver.page_source)
print(driver.current_url)
print(driver.title)
driver.get(http://www.douban.com)
driver.back()
driver.forward()
driver.save_screenshot(douban.png)
# driver.close()
driver.quit()

部分结果如下:

二、driver对象定位标签元素获取标签对象的常用方法

find_element():

定位到的是一个对象,定位不到则报错

find_elements():

定位到则是一个含有元素的列表,定位不到则是一个空列表

2.1 find_element()

from selenium import webdriver

url = http://www.baidu.com
driver = webdriver.Chrome()
driver.get(url)
# 通过xpath进行元素定位(copy->xpath)
# driver.find_element(xpath, //*[@id="kw"]).send_keys(python)
# 通过css选择器进行元素定位(copy->selector)
# driver.find_element(css selector, "#kw").send_keys(python)
# 通过name属性值进行元素定位
# driver.find_element(name, wd).send_keys(python)
# 通过class属性值进行元素定位
# driver.find_element(class name, s_ipt).send_keys(python)
# 通过id值进行元素定位
# driver.find_element(id, su).click()
# 通过链接文本进行元素定位
# driver.find_element_by_partial_link_text()
# driver.find_element(link text, hao123).click()
# 只搜索一部分就可以点进链接,是link text的高级版
driver.find_element(partial link text, hao).click()

下图箭头所指为链接文本:

2.2 find_elements()

from selenium import webdriver

url = https://tieba.baidu.com/f?ie=utf-8&kw=%E6%9E%97%E5%A4%95&fr=search
driver = webdriver.Chrome()
driver.get(url)
el_list = driver.find_elements(xpath, //*[@id="thread_list"]/li/div/div[2]/div[1]/div[1]/a)
for el in el_list:
    print(el)

结果:

三、标签对象提取文本内容和属性值

find_element仅仅能够获取元素,不能直接获取其中的数据,如果需要获取数据需要使用以下方法
    对元素执行点击操作element.click() 对定位到的标签对象进行点击操作 向输入框输入数据element.send_keys(data) 对定位到的标签对象输入数据 获取文本element.text 通过定位获取的标签对象的text属性,获取文本内容 获取属性值element.get_attribute(‘属性名’) 通过定位获取的标签对象的get_attribute函数,传入属性名来获取属性的值
from selenium import webdriver

url = https://tieba.baidu.com/f?ie=utf-8&kw=%E6%9E%97%E5%A4%95&fr=search
driver = webdriver.Chrome()
driver.get(url)
el_list = driver.find_elements(xpath, //*[@id="thread_list"]/li/div/div[2]/div[1]/div[1]/a)
for el in el_list:
    print(el.text, el.get_attribute(href))

结果:

经验分享 程序员 微信小程序 职场和发展