OpenSea NFT 스크레이퍼

개요



OpenSea에는 많은 NFT 사진이 있습니다. 긁는 방법을 배우는 좋은 예입니다. 다른 일반적인 정적 웹 사이트와 비교할 때 OpenSea의 사진은 무한 스크롤과 함께 동적 로딩입니다. 사진이 화면에 있으면 로드 중이며 사라집니다.
화면 밖에 있을 때.

클릭늄



Clicknium은 Python 자동화 라이브러리이며 이러한 종류의 스크래핑 작업을 매우 쉽게 수행할 수 있습니다. Python 라이브러리 이상이지만 VS Code 플러그인 및 브라우저 플러그인을 사용하여 매끄럽고 대화식 코딩 경험을 제공합니다.

요구 사항


  • Windows7 SP1+
  • 파이썬 3.7+
  • VS 코드

  • 어떻게



    예를 들어 긁어 봅시다 Okay Bear.

    그림 정보


  • Chrome에서 Okay Bear의 페이지를 엽니다.
  • F12 키를 눌러 DevTools를 열고 마우스 아이콘을 클릭한 다음 NFT 사진을 클릭합니다.
    다음 그림에서 볼 수 있습니다.
  • 이미지 대체를 사진 이름으로 사용할 수 있음
  • 크기가 다른 그림 src 및 srcset.


  • 사진 캡처



    이 시나리오에서는 유사한 요소를 캡처하는 것이 매우 쉽습니다.
  • VS 코드 확장에서 캡처 버튼을 클릭하여 레코더를 시작합니다.

  • Similar elements 을 클릭합니다.

  • Ctrl + 첫 번째 사진을 클릭한 다음 두 번째 사진을 캡처합니다.



  • 이 방법을 사용하여 가격을 캡처할 수도 있습니다.

    스크롤을 처리하여 사진 로드



    Clicknium은 마우스와 키보드를 제어하기 위한 API를 제공합니다. 이 시나리오에서는 Page-down이 가장 쉬운 방법입니다. HotKey에 대해 자세히 알아보기

    clicknium.send_hotkey("{PGDN}")
    


    사진 다운로드



    사용 요청( pip install requests )

    소스 코드:



    Github: OpenSeaScraper

    import requests
    from time import sleep
    from clicknium import clicknium as cc, locator
    def main():
        cc.chrome.open("https://opensea.io/collection/okay-bears")
        nftDic = {}
    
        while True:
            newDic = {}
            finish = True
            sleep(4)
            nfts = cc.find_elements(locator.sample.opensea.img_okay_bear)
            for nft in nfts:
                src = nft.get_property("src")
                name = nft.get_property("alt")
                if name not in nftDic:
                    newDic[name]=src
                    finish = False
    
            for key,value in newDic.items():
                r = requests.get(value)
                print("Downloading:"+ key)
                imagePath = ".\\image\\" + key + ".jpg"
                with open(imagePath,'wb') as f:
                    f.write(r.content)
    
            nftDic = nftDic | newDic
            if finish:
                break
            else:
                print("next page")
                cc.send_hotkey("{PGDN}")
    
    if __name__ == "__main__":
        main()
    
    


    더 많은 샘플:

    좋은 웹페이지 즐겨찾기