Python selenium库,find_CLASS_NAME报错,find_elements_by_class_name is deprecated. Please use find_elemen

使用selenium库,看了其他各种文章,都说利用classname来定位是find_elements_by_class_name函数。但是我这么实现后:content=driver.find_elements_by_class_name('positionItem-title-text'),发现运行时报错:DeprecationWarning: find_elements_by_class_name is deprecated. Please use find_elements(by=By.CLASS_NAME, value=name) instead

意思是新版的Python已经不支持这个函数了,需要改成find_elements(by=By.CLASS_NAME, value=name)改成这种形式

于是我改成content = driver.find_elements(by=CLASS_NAME, value='positionItem-title-text')

结果还是报错:name 'CLASS_NAME' is not defined.

最终发现find_elements最正确的形式是:content = driver.find_elements(By.CLASS_NAME,'positionItem-title-text')。

如果此时还报错:name 'By' is not defined。需要在一开始声明导入下By。加上这一句就OK啦

from selenium.webdriver.common.by import By.

总结,Python3里,find_elements函数的正确用法:

driver.find_elements(by=By.CLASS_NAME, value='name')或

driver.find_elements(By.CLASS_NAME, 'name')

如果不是class_name,直接换成即可以下对应的即可f'f

#通过元素id定位()
driver.find_element(by.id,'kw')
 
#通过元素name定位
driver.find_element(by.name,'wd')
 
#通过类名进行定位
driver.find_element(by.class_name,'s_ipt')
 
#通过标签定位
driver.find_element(by.tag_name,'input')
 
#通过xpath表达式定位
driver.find_element(by.xpath,'//*[@id="kw"]')
 
#通过css选择器进行定位
driver.find_element(by.css_selector,'#kw')
 
#通过完整超链接定位
driver.find_element(by.link_text,'新闻')
 
#通过部分链接定位
driver.find_element(by.partial_link_text,'hao')
 
driver.close()#关闭浏览器

 再放个循环抓取字节的pm招聘title的源码。

# -*- coding: utf-8 -*-
from selenium import webdriver
import time
from selenium.webdriver.common.by import By

#利用selenium抓取数据
driver= webdriver.Chrome()
final_list=[]
#针对网页列表网址特性,构建循环抓全部的列表网址
for i in range(1,60):
	url = 'https://jobs.bytedance.com/experienced/position?keywords=&category=6704215864591255820&location=CT_11&project=&type=&job_hot_flag=&current={}&limit=10&functionCategory='.format(i)
	driver.get(url)
	time.sleep(3)
	content = driver.find_elements(By.CLASS_NAME,'positionItem-title-text')
	for i in content:
		final_list.append(i.text)
		print(i.text)
#全部抓完之后再关闭浏览器,如果放在循环里,抓一次就关闭浏览器,第二次抓的时候就会报错啦。
driver.close()
#将抓取到的title写入文件
for i in final_list:
    with open('zijie_job.txt','w+') as f:
		f.write(i)
		f.write('\n')

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值