我有一个指向OneDrive文件夹(https://1drv.ms/f/s!AtXoQFW327DIyMwPjZhmauUCSSHXUA)的URL。知道该链接的每个人都可以通过浏览器访问该文件夹。
现在,我的目标是创建一个.NET应用程序,通过该链接,该应用程序能够获取该文件夹内文件/文件夹的列表。
那有可能吗?
答案 0 :(得分:1)
执行此操作的最佳方法是使用通过Graph公开的OneDrive API。
您可以阅读"Using Sharing Links"文档以获取全部详细信息,但实际上您可以致电:
https://graph.microsoft.com/v1.0/shares/u!aHR0cHM6Ly8xZHJ2Lm1zL2YvcyFBdFhvUUZXMzI3REl5TXdQalpobWF1VUNTU0hYVUE/driveItem/children
您还可以使用.NET SDK避免自己对API进行调用,在这种情况下,您的代码应类似于:
client.Shares["u!aHR0cHM6Ly8xZHJ2Lm1zL2YvcyFBdFhvUUZXMzI3REl5TXdQalpobWF1VUNTU0hYVUE"].DriveItem.Children.Request().GetAsync();
答案 1 :(得分:0)
Selenium Web Driver是执行此类任务的不错选择。
Selenium.Chrome.WebDriver
和Selenium.WebDriver
。因此,现在,我们需要创建一个驱动程序服务,并在我们的网站中找到所需的元素。
据我所知,文件名存储为名为signalFieldValue_03700093
的跨度类。
但是“ 最后修改的信息”也存储在此类下,我需要使用以下代码跳过“ 最后修改的信息”:
bool skip = false;
List<string> myFiles = new List<string>();
ChromeDriverService service = ChromeDriverService.CreateDefaultService();
ChromeOptions option = new ChromeOptions();
var driver = new ChromeDriver(service, option);
driver.Url = "https://1drv.ms/f/s!AtXoQFW327DIyMwPjZhmauUCSSHXUA";
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
foreach (IWebElement element in driver.FindElements(By.XPath("//span[@class='signalFieldValue_03700093']")))
{
if (!skip)
{
myFiles.Add(element.Text);
skip = true;
}
else
skip = false;
}
结果,我们将文件名保存在名为myFiles
的字符串数组中。
希望这会有所帮助!