我正在遵循this建立一个LinkedIn工作数据的刮刀。
下面是我的代码:
from selenium import webdriver
import time
import pandas as pd
url = 'https://www.linkedin.com/jobs/search?keywords=&location=San%20Francisco%2C%20California%2C%20United%20States&locationId=&geoId=102277331&f_TPR=&distance=100&position=1&pageNum=0'
wd = webdriver.Chrome(executable_path=r'/Users/voi/chromedriver')
wd.get(url)
no_of_jobs = int(wd.driver.find_element_by_css_selector('h1>span').get_attribute('innerText'))
我已经看到了this,并尝试了解决方案,但收到了类似的错误,除了关于WebDriver对象没有驱动程序属性。
以下是完整的错误消息:
cd /Users/voi ; /usr/bin/env /usr/local/bin/python3 /Users/voi/.vscode/extensions/ms-python.python-2
022.8.1/pythonFiles/lib/python/debugpy/launcher 59402 -- /Users/voi/jobscrape.py
/Users/voi/jobscrape.py:7: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
wd = webdriver.Chrome(executable_path=r'/Users/voi/chromedriver')
Traceback (most recent call last):
File "/Users/voi/jobscrape.py", line 10, in <module>
no_of_jobs = int(wd.find_element_by_css_selector('h1>span').get_attribute('innerText'))
AttributeError: 'WebDriver' object has no attribute 'find_element_by_css_selector'
4条答案
按热度按时间zpjtge221#
好了,我回答了我自己的问题。单独的方法find_element_by_* 已经被find_element代替了,例如:
更多信息请参阅here
k5ifujac2#
Selenium刚刚在
4.3.0
版本中删除了该方法。请参阅更改:https://github.com/SeleniumHQ/selenium/blob/a4995e2c096239b42c373f26498a6c9bb4f2b3e7/py/CHANGES您现在需要用途:
在您的示例中,可以用途:
为了提高可靠性,应考虑将
WebDriverWait
与visibility_of_element_located
结合使用。下面是它的外观:
pnwntuvh3#
Selenium最近推出了removed,16个被弃用的
find_element(s)_by_x
函数,支持通用的find_element
和find_elements
函数,它们将“by”部分作为它们的第一个参数。要更新代码,可以使用IDE得全部查找并替换功能替换以下16个搜索词:
如果还没有导入
By
,您还需要这样做:wko9yo5t4#
为了补充来自@m.lekk(https://stackoverflow.com/a/72854301/7733418)的答案,我还尝试使用
dir()
来获取对象的所有属性,并找到包含所需信息的text
属性。