python - 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() 但这也不起作用。
有人可以帮我吗?
解决方案
我在解决问题的选项中添加了无头模式。
推荐阅读
- c++ - gcc 忽略要链接的明确指定的链接库
- typescript - Observable 没有调用签名
- c# - 如何在web api C#中上传带有实体类的图像
- excel - Excel Power Query M语言中的条件最大值?
- java - 如何对值求和 Java Hashmap
- c# - C# 中的 LINQ to SQL 查询
- php - 没有检测到 symfony 项目的 PHP 二进制文件
- hangout - 是否可以为 Google Hangouts 创建一个“send-message-to(..)”网址?
- javascript - 清空定时器时运行SetTimeout的内容
- c# - 在将行从一个数据网格复制到另一个数据网格之前检查重复项