我已经用python编写了一个脚本,以从网页中抓取一些链接并将其写入csv文件。从IDE运行脚本时,我的脚本会以正确的方式执行此操作。
当我使用windows task scheduler
运行相同命令时,我看到弹出一个command prompt
并且脚本也运行并在其中打印结果,但是当任务执行完毕时却没有任何csv文件完成。
我想念什么吗?
当通过.bat
的{{1}}文件运行脚本时,要获取一个csv文件,我应该做些什么改变? >
windows task scheduler
包含:
.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
我已经在下面明确指定了“ .bat”文件的位置:
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])
答案 0 :(得分:3)
您的代码将写入当前工作目录,因为它打开的文件名没有路径。 .bat
文件的位置不能确定正在运行的代码的当前工作目录。
您没有指定工作目录;我希望可以使用调度程序中的起始于字段进行设置,因此可以在default location,%Windir%\System32\
中创建文件。
在开始于字段中设置要在其中创建CSV文件的目录,或者让批处理脚本使用cd
将当前工作目录移动到正确的位置,或者打开文件时使用绝对路径。
例如,如果您的批处理脚本首先运行cd /d %~dp0
,则工作目录将更改为批处理脚本的目录,并在该位置解析Python中的相对路径。