python - 使用命令行的 Python 计划
问题描述
我有这个问题,我想自动化一个脚本。在通过的项目中,我为此使用了 python 调度程序。但是对于这个项目,我不确定如何处理。
问题是代码使用代码之外的登录详细信息,并在启动脚本时在命令行中输入。
前任。python scriptname.py email@youremail.com 密码
如何使用 python 调度程序自动执行此操作?'scriptname.py' 中的代码是:
//LinkedBot.py
import argparse, os, time
import urlparse, random
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
def getPeopleLinks(page):
links = []
for link in page.find_all('a'):
url = link.get('href')
if url:
if 'profile/view?id=' in url:
links.append(url)
return links
def getJobLinks(page):
links = []
for link in page.find_all('a'):
url = link.get('href')
if url:
if '/jobs' in url:
links.append(url)
return links
def getID(url):
pUrl = urlparse.urlparse(url)
return urlparse.parse_qs(pUrl.query)['id'][0]
def ViewBot(browser):
visited = {}
pList = []
count = 0
while True:
#sleep to make sure everything loads, add random to make us look human.
time.sleep(random.uniform(3.5,6.9))
page = BeautifulSoup(browser.page_source)
people = getPeopleLinks(page)
if people:
for person in people:
ID = getID(person)
if ID not in visited:
pList.append(person)
visited[ID] = 1
if pList: #if there is people to look at look at them
person = pList.pop()
browser.get(person)
count += 1
else: #otherwise find people via the job pages
jobs = getJobLinks(page)
if jobs:
job = random.choice(jobs)
root = 'http://www.linkedin.com'
roots = 'https://www.linkedin.com'
if root not in job or roots not in job:
job = 'https://www.linkedin.com'+job
browser.get(job)
else:
print "I'm Lost Exiting"
break
#Output (Make option for this)
print "[+] "+browser.title+" Visited! \n("\
+str(count)+"/"+str(len(pList))+") Visited/Queue)"
def Main():
parser = argparse.ArgumentParser()
parser.add_argument("email", help="linkedin email")
parser.add_argument("password", help="linkedin password")
args = parser.parse_args()
browser = webdriver.Firefox()
browser.get("https://linkedin.com/uas/login")
emailElement = browser.find_element_by_id("session_key-login")
emailElement.send_keys(args.email)
passElement = browser.find_element_by_id("session_password-login")
passElement.send_keys(args.password)
passElement.submit()
在 OSX 上运行它。
解决方案
我可以看到至少有两种不同的方式来自动触发你的脚本。既然您提到您的脚本是以这种方式启动的:
python scriptname.py email@youremail.com password
这意味着您从 shell 启动它。当您想安排它时,听起来 Crontab 是一个完美的答案。(例如见https://kvz.io/blog/2007/07/29/schedule-tasks-on-linux-using-crontab/ )
如果你真的想使用python调度器,你可以使用子进程。
在使用 python 调度程序的文件中:
import subprocess
subprocess.call("python scriptname.py email@youremail.com password", shell=True)
推荐阅读
- python - 将excel表复制到另一个或仅使用python删除其行
- python - 圆角 Tkinter / Canvas Tkinter 上的透明图像
- ansible - Vars_prompt 注册结果以将其重新用作变量
- java - 如何以最佳方式在休眠中为以下条件创建条件查询
- javascript - Web Audio API 上的离线源
- docker - docker daemon 意外退出
- python - 有人可以通过在此处指出并更正错误来帮助我吗,因为我想每 24 小时重复一次该消息?
- vue.js - 如何在我自己的组件 vuejs 中使用模板
- javascript - 在 wordpress 网站上选择输入字段时,Android 键盘打开然后立即关闭
- javascript - Puppeteer 无法在 heroku 上找到选择器,但在本地工作