繁体   English   中英

Scheduler使python脚本运行但不生成csv文件

[英]Scheduler makes a python script run but doesn't produce a csv file

我在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"

在此输入图像描述

您的代码写入当前工作目录 ,因为它打开没有路径的文件名。 .bat文件的位置不确定正在运行的代码的当前工作目录

您没有指定工作目录; 我希望在调度程序中使用Start in字段进行设置,因此该文件是在默认位置 %Windir%\\System32\\

在“ 开始”字段中为要创建的CSV文件设置目录,让批处理脚本使用cd将当前工作目录移动到正确的位置,或在打开文件时使用绝对路径。

例如,如果批处理脚本首先运行cd /d %~dp0则工作目录将更改为批处理脚本的目录,并且Python中的相对路径将针对该位置进行解析。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM