사이트에서 끊어진 링크를 찾는 빠른 스크립트 🎯

10236 단어 testpythonwebdev
이 게시물은 원래 내 개인 웹사이트xtrp.io에서 가져온 것입니다. 여기에서 내 정보를 읽고 내 프로젝트를 확인하는 등의 작업을 할 수 있습니다.

소개



인터넷에서 거의 모든 클릭이 "오류 404: 페이지를 찾을 수 없음"페이지로 끝나는 것 같습니다. "찾으시는 페이지가 존재하지 않습니다.", "죄송합니다. 이 서버에서 요청한 URL을 찾을 수 없습니다.", "죄송합니다. 문제가 발생했습니다. 페이지를 찾을 수 없습니다."모든 인터넷 사용자는 이와 같은 페이지를 본 적이 있습니다.

웹 개발자가 영리한 404 페이지를 구축하는 데 관심을 덜 기울이고 끊어진 링크를 모두 제거하기 시작하는 것이 중요하다고 생각합니다.

프로그램



끊어진 링크를 찾는 자동화 프로그램을 만들었습니다.



Python 3으로 작성되었으며 주어진 사이트의 링크를 재귀적으로 따라가며 각각의 404 오류를 확인합니다. 프로그램이 전체 사이트 검색을 마치면 발견된 끊어진 링크와 해당 링크의 위치를 ​​출력하여 개발자가 수정할 수 있도록 합니다.

이 프로그램은 비교적 짧은 시간에 많은 HTTP 요청을 생성하므로 인터넷 사용률 등에 유의하십시오.

용법


  • Python 3이 설치되어 있는지 확인:

  • 다음 명령으로 버전 번호가 생성되지 않으면 python.org 에서 Python 3을 다운로드하십시오.

    $ python3 -V
    

  • PyPi로 Requests 및 BeautifulSoup 패키지(HTML 구문 분석용)를 다운로드합니다.

  • (참고: 저는 이 패키지를 유지 관리하지 않으며 관련이 없으므로 다운로드에 따른 위험은 사용자가 감수해야 합니다.)

    $ pip3 install requests
    $ pip3 install beautifulsoup4
    

  • 다음 코드를 파일에 복사하여 붙여넣습니다.
    find_broken_links.py
    이 기사에서).

  • import requests
    import sys
    from bs4 import BeautifulSoup
    from urllib.parse import urlparse
    from urllib.parse import urljoin
    
    searched_links = []
    broken_links = []
    
    def getLinksFromHTML(html):
        def getLink(el):
            return el["href"]
        return list(map(getLink, BeautifulSoup(html, features="html.parser").select("a[href]")))
    
    def find_broken_links(domainToSearch, URL, parentURL):
        if (not (URL in searched_links)) and (not URL.startswith("mailto:")) and (not ("javascript:" in URL)) and (not URL.endswith(".png")) and (not URL.endswith(".jpg")) and (not URL.endswith(".jpeg")):
            try:
                requestObj = requests.get(URL);
                searched_links.append(URL)
                if(requestObj.status_code == 404):
                    broken_links.append("BROKEN: link " + URL + " from " + parentURL)
                    print(broken_links[-1])
                else:
                    print("NOT BROKEN: link " + URL + " from " + parentURL)
                    if urlparse(URL).netloc == domainToSearch:
                        for link in getLinksFromHTML(requestObj.text):
                            find_broken_links(domainToSearch, urljoin(URL, link), URL)
            except Exception as e:
                print("ERROR: " + str(e));
                searched_links.append(domainToSearch)
    
    find_broken_links(urlparse(sys.argv[1]).netloc, sys.argv[1], "")
    
    print("\n--- DONE! ---\n")
    print("The following links were broken:")
    
    for link in broken_links:
        print ("\t" + link)
    

  • 선택한 웹 사이트를 사용하여 명령줄에서 실행합니다.

  • $ python3 find_broken_links.py https://your_site.com/
    

    결론



    이 정보가 도움이 되었기를 바라며 제 사이트에서 끊어진 링크 몇 개를 찾는 데 확실히 도움이 되었습니다.

    이 프로그램은 CC0 Licensed이므로 완전히 무료로 사용할 수 있지만 어떠한 보증이나 보장도 하지 않습니다.

    이 게시물이 마음에 드셨다면 ❤️를 해주세요!



    스크롤해주셔서 감사합니다.

    — 가브리엘 로무알도, 2019년 11월 10일

    내 블로그 게시물, 확장된 내 정보 페이지 등을 보려면 내 개인 웹 사이트를 확인하십시오. xtrp.io

    참고: 이전에는 Fred Adams라는 가명으로 썼습니다.

    좋은 웹페이지 즐겨찾기