利用selenium提取网页数据

1.driver对象的常用属性和方法

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

from selenium import webdriver
import time

url = 'http:www.baidu.com'

# 创建一个浏览器对象
driver = webdriver.Chrome()

# 访问指定的url地址
driver.get(url)

# 显示源码
# print(driver.page_source)
# 显示响应对应的url
# print(driver.current_url)
# print(driver.title)
# time.sleep(2)
# driver.close()
# driver.get('http://www.douban.com')
# time.sleep(2)
# driver.back()
# time.sleep(2)
# driver.forward()
# time.sleep(2)
driver.save_screenshot('baidu.jpg')
driver.close()
2. driver对象定位标签元素获取标签对象的方法

在selenium中可以通过多种方式来定位标签,返回标签元素对象

find_element_by_id                         (返回一个元素)
find_element(s)_by_class_name             (根据类名获取元素列表)
find_element(s)_by_name                 (根据标签的name属性值返回包含标签对象元素的列表)
find_element(s)_by_xpath                 (返回一个包含元素的列表)
find_element(s)_by_link_text             (根据连接文本获取元素列表)
find_element(s)_by_partial_link_text     (根据链接包含的文本获取元素列表)
find_element(s)_by_tag_name             (根据标签名获取元素列表)
find_element(s)_by_css_selector         (根据css选择器来获取元素列表)

注意:

  • find_element和find_elements的区别:
    多了个s就返回列表,没有s就返回匹配到的第一个标签对象
  • find_element匹配不到就抛出异常,find_elements匹配不到就返回空列表
    by_link_text和by_partial_link_tex的区别:全部文本和包含某个文本
  • 以上函数的使用方法
    driver.find_element_by_id(‘id_str’)
from selenium import webdriver
import time

url = 'http://www.baidu.com'

driver = webdriver.Chrome()

driver.get(url)

# 通过xpath进行元素定位
# driver.find_element_by_xpath('//*[@id="kw"]').send_keys('南京')
# 通过css选择器进行元素定位
# driver.find_element_by_css_selector('#kw').send_keys('南京')
# # 通过name属性值进行元素定位
# driver.find_element_by_name('wd').send_keys('南京')
# 通过class属性值进行元素定位
# driver.find_element_by_class_name('s_ipt').send_keys('南京')
# 通过链接文本进行定位 ,hao123进行精确定位
# driver.find_element_by_link_text('hao123').click()
# 通过链接文本进行定位 ,hao进行模糊定位
# driver.find_element_by_partial_link_text('hao').click()

# 目标元素在当前html中是唯一标签的时候或者是众多定位出来的标签中的第一个的时候才能使用
print(driver.find_element_by_tag_name('title'))

# driver.find_element_by_id('su').click()

time.sleep(3)
driver.quit()
3. 标签对象提取文本内容和属性值

find_element仅仅能够获取元素,不能够直接获取其中的数据,如果需要获取数据需要使用以下方法

  • 对元素执行点击操作element.click()

    • 对定位到的标签对象进行点击操作
  • 向输入框输入数据element.send_keys(data)

    • 对定位到的标签对象输入数据
  • 获取文本element.text

    • 通过定位获取的标签对象的text属性,获取文本内容
  • 获取属性值element.get_attribute("属性名")

    • 通过定位获取的标签对象的get_attribute函数,传入属性名,来获取属性的值
from selenium import webdriver
import time


url = 'https://cz.58.com/hezu/?PGTID=0d100000-001c-f464-637e-bdade32cfac4&ClickID=2'
driver = webdriver.Chrome()
driver.get(url)

el_list = driver.find_elements_by_xpath('/html/body/div[7]/div[2]/ul/li/div[2]/h2/a')
for el in el_list:
    print(el.text,el.get_attribute('href'))
time.sleep(2)
driver.quit()
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值