我用python设计了一个webscraper。这是代码:
import sys
from selenium import webdriver
import time
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.keys import Keys
import datetime
from datetime import datetime
import pandas as pd
from bs4 import BeautifulSoup
option = webdriver.ChromeOptions()
prefs = {"download.default_directory" : "C:\DownloadFolder\"}
option.add_experimental_option("prefs",prefs)
option.add_argument("--start-maximized");
chromedriver = "C:Scriptchromedriver.exe"
driver = webdriver.Chrome(executable_path=chromedriver, options=option)
BASE_URl = "https://www.mywebsite.com"
driver.get(BASE_URl)
time.sleep(3)
link2 = driver.find_element_by_xpath("mypath").text;
link = driver.find_element_by_link_text(link2)
link.click()
time.sleep(10)
driver.quit()
sys.exit(0)
我在SQL Server代理中创建了一个作业,需要在特定的时间表上运行这个刮板。问题是,网页刮板有时运行正确,有时它给出了一个错误。当它产生错误时,它首先无限运行。
当无法完成时,会产生以下错误:
代码:0xC0029151来源:下载执行进程任务
描述:在执行"C:PythonPython392 Python .exe"myscript.py"在"C:script ",进程退出码为"1"而预期是"0"。结束错误DTExec:包执行返回DTSER_FAILURE (1). Started: 19:45:21 Finished: 19:55:28 Elapsed:607.188秒。包执行失败。步骤失败。
我不清楚问题是什么。如果我手动启动.py文件,它总是工作的。此外,我还将.py文件嵌入到一个SSIS包中,这个包是SQL代理使用的。另外,当我手动启动包时,它也100%工作。
我认为webscraper在第一次完成它的工作后,它没有关闭所有使用的进程。我试图在driver.quit()之前添加driver.close(),但这也不起作用。
有人能帮我吗?
我在选项中添加了无头模式,解决了这个问题。