爬虫中selenium提取数据
每日分享:
一个人的行为和品格。能够给另一个人带来的心灵的震撼和扭转,是这个世界上最强大的力量吧,它唤醒了朴福子心底尚存的良知
-
了解driver对象的常用属性和方法 掌握driver对象定位标签元素获取标签对象的方法 掌握标签对象提取文本和属性值的方法
一、driver对象的常用属性和方法
在使用selenium过程中,实例化driver对象后,driver对象有一些常用的属性和方法
- driver.page_source:当前标签页浏览器渲染之后的网页代码
- driver.current_url:当前标签页的url(响应对应的url)
- driver.close():关闭当前标签页,如果只有一个标签页则关闭整个浏览器
- driver.quit():关闭浏览器
- driver.forward():页面前进
- driver.back():页面后退
- 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))
结果:
