Selenium构建了404s的列表

发布时间:2020-09-16 发布网站:编程之家
编程之家收集整理的这篇文章主要介绍了Selenium构建了404s的列表编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否有可能让Selenium抓取TLD并逐步导出任何404的列表?

我被困在Windows机器上几个小时,想要在回到舒适的* nix之前运行一些测试……

解决方法

我不太了解 Python,也不了解任何常用的库,但我可能会做这样的事情(使用C#代码作为示例,但概念应该适用):

// WARNING! Untested code here. May not completely work,and
// is not guaranteed to even compile.

// Assume "driver" is a validly instantiated WebDriver instance
// (browser used is irrelevant). This API is driver.get in Python,// I think.
driver.Url = "http://my.top.level.domain/";

// Get all the links on the page and loop through them,// grabbing the href attribute of each link along the way.
// (Python would be driver.find_elements_by_tag_name)
List<string> linkUrls = new List<string>();
ReadOnlyCollection<IWebElement> links = driver.FindElement(By.TagName("a"));
foreach(IWebElement link in links)
{
    // Nice side effect of getting the href attribute using GetAttribute()
    // is that it returns the full URL,not relative ones.
    linkUrls.Add(link.GetAttribute("href"));
}

// Now that we have all of the link hrefs,we can test to
// see if they're valid.
List<string> validUrls = new List<string>();
List<string> invalidUrls = new List<string>();
foreach(string linkUrl in linkUrls)
{
    HttpWebRequest request = WebRequest.Create(linkUrl) as HttpWebRequest;
    request.Method = "GET";

    // For actual .NET code,you'd probably want to wrap this in a
    // try-catch,and use a null check,in case GetResponse() throws,// or returns a type other than HttpWebResponse. For Python,you
    // would use whatever HTTP request library is common.

    // Note also that this is an extremely naive algorithm for determining
    // validity. You could just as easily check for the NotFound (404)
    // status code.
    HttpWebResponse response = request.GetResponse() as HttpWebResponse;
    if (response.StatusCode == HttpStatusCode.OK)
    {
        validUrls.Add(linkUrl);
    }
    else
    {
        invalidUrls.Add(linkUrl);
    }
}

foreach(string invalidUrl in invalidUrls)
{
    // Here is where you'd log out your invalid URLs
}

此时,您有一个有效和无效URL列表.您可以将这一切包装成一个可以将TLD URL传递到其中的方法,并使用每个有效的URL递归调用它.这里的关键是你没有使用Selenium来实际确定链接的有效性.如果您真的正在进行递归爬行,那么您不希望“点击”链接以导航到下一页.相反,您需要直接导航到页面上的链接.

您可以采取其他方法,例如通过代理运行所有内容,以及通过这种方式捕获响应代码.这取决于您对构建解决方案的期望.

总结

以上是编程之家为你收集整理的Selenium构建了404s的列表全部内容,希望文章能够帮你解决Selenium构建了404s的列表所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478
编程之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!