【发布时间】:2018-12-02 13:53:01
【问题描述】:
我用 python 编写了一个脚本来从网页中抓取一些链接并将它们写入 csv 文件。从 IDE 运行时,我的脚本以正确的方式执行此操作。
当我使用windows task scheduler 运行相同的程序时,我可以看到command prompt 弹出并且脚本运行并在那里打印结果,但是当任务完成时我没有得到任何 csv 文件。
我错过了什么吗?
当脚本通过windows task scheduler 中的.bat 文件运行时,我应该带来哪些可能的更改来获取 csv 文件?
.bat 包含:
@echo off
"C:\Users\WCS\AppData\Local\Programs\Python\Python36-32\python.exe" "C:\Users\WCS\AppData\Local\Programs\Python\Python36-32\examplescript.py"
examplescript.py 包含:
import csv
import requests
from urllib.parse import urljoin
from bs4 import BeautifulSoup
url = "https://www.janglo.net/component/option,com_sobi2/"
def get_info(link):
res = requests.get(url)
soup = BeautifulSoup(res.text,"lxml")
for items in soup.select("#sobi2CatListSymbols .sobi2SubcatsListItems a[title]"):
if items.text=="Tutors":
ilink = f"{urljoin(url,items.get('href'))}"
return ilink
def get_links(tlink):
linklist = []
res = requests.get(tlink)
soup = BeautifulSoup(res.text,"lxml")
for item in soup.select(".sobi2ItemTitle a"):
linklist.append(urljoin(url,item.get("href")))
return linklist
if __name__ == '__main__':
with open("task_scheduler.csv","a",newline="") as infile:
writer = csv.writer(infile)
item = get_info(url)
for nlink in get_links(item):
print(nlink)
writer.writerow([nlink])
下面我已经明确指定了“.bat”文件的位置:
"C:\Users\WCS\AppData\Local\Programs\Python\Python36-32\test_schedule.bat"
【问题讨论】:
-
您不需要单行批处理文件即可将 Python 脚本作为任务运行。我不知道你为什么认为你需要它。
-
那是因为不执行
.batfile@eryksun. -
将“python.exe”的全限定路径放入“program”字段; “参数”字段中脚本的完全限定和引用路径;以及“开始于”字段中的完全限定的工作目录。也就是说,出于各种原因,您不应该将数据文件保存在 Python 目录或应用程序目录中,包括通常您的程序可能无权在其中创建文件的事实。对于用户可见的数据,请使用众所周知的用户数据文件夹,例如“文档”。
标签: python python-3.x windows windows-task-scheduler