首页 > 解决方案 > Python webscraper 在 SQL Server 代理中运行不一致

问题描述

我在 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:\Script\chromedriver.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 代理中创建了一个作业,该作业需要按特定计划运行此 webscraper。问题是 webscraper 有时运行正确,有时会出错。当它产生错误时,它首先无限运行。
当它无法完成时,会产生以下错误:

代码:0xC0029151 来源:下载 执行进程任务
描述:在“C:\script”处执行“C:\Python\Python392\python.exe”“myscript.py”时,进程退出代码为“1”,而预期为“0”。结束错误 DTExec:包执行返回 DTSER_FAILURE (1)。开始时间:19:45:21 结束时间:19:55:28 经过时间:607.188 秒。包执行失败。步骤失败。

我不清楚问题是什么。如果我手动启动 .py 文件,它总是可以工作的。另外,我在一个SSIS包中嵌入了.py文件,这个包是SQL代理使用的。此外,当我手动启动包时,它也是 100% 工作的。

我认为网络爬虫第一次完成工作后,它并没有关闭所有使用的进程。我试图在 driver.quit() 之前添加 driver.close() 但这也不起作用。

有人可以帮我吗?

标签: pythonsql-serverssisselenium-chromedriver

解决方案


我在解决问题的选项中添加了无头模式。


推荐阅读