파이썬으로 스크래핑

beautifulsoup 패키지를 기반으로 Pythonic 방식으로 웹 페이지를 스크랩하는 도구를 만들었습니다.

부인 성명



허가 없이 웹사이트를 스크랩하는 것은 불법입니다.

데모



라이브러리로 빠르고 더러운 스크레이퍼를 만들었습니다. URL을 호출하고 모든 링크 또는 이미지 URL을 가져올 수 있습니다. 예를 들면 다음과 같습니다.

python3 pextractor.py -u https://mytarget.com -e links -o links.txt
python3 pextractor.py -u https://mytarget.com -e img -o images.txt




jmau111 / pextractor.py


빠르고 더러운 페이지 스크레이퍼.





pextractor.py


HTML 콘텐츠를 스크랩하는 간단한 파서(고유한 페이지에서).

경고


스크래핑 웹사이트는 불법일 수 있습니다. 이 도구를 사용하든 사용하지 않든 승인 없이는 사용하지 마십시오.

사용하는 방법


git clone https://github.com/jmau111/pextractor.py pextractor
cd pextractor
pip install -r requirements.txt
python3 pextractor.py -u https://mytarget.com -e links -o results.txt

전제 조건


pip install -r requirements.txt

엔티티


엔티티는 검색하려는 특정 태그 또는 요소입니다.
  • links : 페이지의 href(<a> 태그)
  • generator : 일부 프레임워크 및 CMS에서 추가되는 메타 생성기
  • comments : HTML 주석
  • img : HTML 이미지 URL

  • 옵션


  • -u : 타겟팅할 URL입니다.
  • -e : 특정 엔티티, "링크"가 기본 엔티티입니다. 전체 목록은 Entities을 참조하십시오.
  • -o : 출력 파일. 결과를 저장할 파일의 경로(선택 사항)
  • -nc : "확인 안 함"을 나타냅니다. 공개 IP 확인을 건너뜁니다.

  • IP 확인




    View on GitHub


    왜요?



    Python에서 기본 스크레이퍼를 빌드하는 데 걸리는 시간을 테스트하고 싶었습니다. 생태계가 매우 강력하기 때문에 용이성에 놀라지 않지만 정찰, 무차별 대입 공격 및 발자국 가능성은 놀랍습니다.

    매우 정확하며 전체 HTML 트리의 특정 요소와 특정 특성을 대상으로 지정할 수 있습니다.

    python3 pextractor.py -u https://mytarget.com -e generator
    


    위의 명령은 메타 생성기를 찾으면 가져옵니다.

    고급 사용법


    prettify 와 같이 원하는 것을 모를 때 도움이 되는 더 많은 옵션이나 원시 텍스트를 추출하는 것과 같은 흥미로운 도우미가 있습니다. 다른 패키지와 결합하면 전체 웹 사이트를 재귀적으로 스크랩할 수도 있습니다.

    스크레이퍼의 종류



    다음은 몇 가지 예입니다.
  • 거미
  • HTML 파서 ^^
  • 스크린 스크레이퍼(예: PhantomJS)
  • 인간모방(표절)

  • 원치 않는 긁힘으로부터 보호하는 방법



    보시다시피 설정이 비교적 쉽습니다. 실제로 라이브러리에 의존하는 다양한 스크립트가 있습니다.

    스크래핑을 방지하는 것은 쉬운 일이 아닙니다. 많은 기술에는 콘텐츠를 조건부로 표시하는 특수 쿠키 또는 js 기반 솔루션이 포함되지만 해결하는 것보다 더 많은 문제를 일으킬 수 있습니다.

    마찬가지로 데이터를 난독화하고 캡차(또는 허니팟)를 사용하는 것이 반드시 최선의 접근 방식은 아니며 접근성과 사용자 경험을 해칠 수 있습니다.

    할 수 있는 것은 요청 속도를 제한하고 사용자 요청 로그를 유지하는 것입니다(인증이 필요하지 않음). 이렇게 하면 스크레이퍼를 "식별"하거나 적어도 스크레이퍼의 삶을 훨씬 더 어렵게 만들 수 있습니다. 속도 제한에 도달하면 429 오류(요청이 너무 많음)가 표시됩니다.

    또한 특정 IP 범위를 대상으로 지정하여 보다 효과적으로 차단하고 IP 순환과 같은 알려진 바이패스를 사용하는 사람들을 차단할 수 있습니다.

    특히 많은 양과 같은 일부 메트릭을 사용하여 자동화된 트래픽(봇)을 포착하는 방법이 있습니다. 상대방이 평소보다 강하면 User-Agent(또는 빈 User-Agent) 및 더 복잡한 패턴으로 트래픽을 차단할 수 있습니다.

    스크레이퍼가 만족하는지 확인하기 위해 HTML을 수정할 수도 있습니다.

    마지막으로 API 및 기타 JSON/XML 피드에 각별히 주의하는 것이 좋습니다. 여러 목적에 편리하지만 너무 개방적이거나 잘못 구성된 경우 스크레이퍼를 공급할 수도 있습니다.

    마무리



    웹 스크래핑은 사악하지는 않지만 검은 모자 및 기타 악의적인 행위자도 이를 사용합니다. 적극적인 모니터링을 권장합니다.

    좋은 웹페이지 즐겨찾기