python - 跨类的多个实例仅调用一次函数
问题描述
我对 Python 和 Web Scraping 非常陌生,所以如果您可以改进我的代码并用您改进的版本进行回复,我们将不胜感激。
我正在从 Indeed 上抓取招聘信息(网络抓取 - selenium)并将它们导出到电子表格中。我想搜索 2 个工作:1. 软件工程师,2. 软件开发人员
我不想登录 Indeed 搜索“软件工程师职位”,然后再次登录搜索“软件开发人员职位”。我想调用这个login_indeed()
函数一次,然后像search_jobs()
每次创建一个类的新实例一样调用所有其他函数
class IndeedJobScraper:
def __init__(position, location):
self.position = position
self.location = location
def login_indeed(self): # I WANT TO CALL THIS ONCE
# input username and password
def search_jobs(self)
# input job title and location into search boxes
def retrieve_jobs(self)
self.login()
self.search_jobs()
if __name__ == '__main__':
obj1 = IndeedJobScraper('Software Engineer', 'Ireland')
obj1.retrieve_jobs()
obj2 = IndeedJobScraper('Software Developer', 'Ireland')
obj2.retrieve_jobs()
当前:obj1
创建时: - 登录 Indeed - 搜索软件工程师职位
When `obj1` created:
- Login to Indeed
- Search for Software Engineer Jobs
我想要:obj1
创建时: - 登录 Indeed - 搜索软件工程师职位
When `obj2` created:
- ̶L̶o̶g̶i̶n̶ ̶t̶o̶ ̶I̶n̶d̶e̶e̶d̶
- Search for Software Engineer Jobs
所以......我'login_indeed'(1x)和'search_jobs'(2x)
谢谢
解决方案
在构造函数中进行一次授权,创建一次对象,然后在需要时调用您的搜索方法。例如我会这样写:
class IndeedJobScraper:
def __init__(self):
# input username and password
pass
def search_jobs(self, position, location)
# input job title and location into search boxes
def retrieve_jobs(self, position, location)
self.search_jobs(position, location)
if __name__ == '__main__':
obj1 = IndeedJobScraper()
obj1.retrieve_jobs('Software Engineer', 'Ireland')
obj1.retrieve_jobs('Software Developer', 'Ireland')
推荐阅读
- javascript - 在 javascript 中将训练数据保存在 json 文件中
- fortran - 如何使用 gfortran-10 构建 MPICH?
- python - 是否可以在字典中使用两个(非嵌套)for 循环?
- python - 将烧瓶表单字段与 html 输入相结合
- python - 有什么方法可以加快 SQLite Update 命令的速度吗?
- reactjs - 如何处理大型 React 应用程序
- java - NoSuchBeanDefinitionException:没有名为“persistenceUnit”的bean可用
- numpy - 爱因斯坦 3D 矩阵和的运算
- android - 使用android应用在Mysql中搜索相似词
- javascript - onChange 函数过滤了我所有的项目,但我不能再次调用所有项目?