Googlescraper는 오픈 소스 도구이며 향후 오픈 소스 도구로 남아있을 것입니다.
또한 일반 목적 크롤링 인프라 인 Googlescraper의 현대 후계자는 오픈 소스와 무료로 유지됩니다.
그러나 어떤 사람들은 Google이나 다른 검색 엔진에서 일부 데이터를 긁어내는 서비스를 신속하게 갖기를 원할 것입니다. 이런 이유로 웹 서비스 scrapeoulous.com을 만들었습니다.
마지막 주 : 2019 년 2 월
Googlescraper의 후계자는 여기에서 찾을 수 있습니다
이것은 더 이상이 프로젝트를 유지하지 않을 것임을 의미합니다. 모든 새로운 개발은 위의 프로젝트에서 진행됩니다.
이 프로젝트에 계속 많은 노력을 기울이지 않을 몇 가지 이유가 있습니다.
이런 이유로 나는 인형극 위에 실행되는 JavaScript의 https://www.npmjs.com/package/se-craper라는 스크래핑 라이브러리를 계속 개발할 것입니다.
https://www.npmjs.com/package/se-scraper에서 앱을 다운로드 할 수 있습니다
다양한 검색 엔진을 지원하며 Googlescraper보다 훨씬 효율적입니다. 코드베이스는 스레딩/큐잉 및 복잡한 로깅 기능없이 훨씬 덜 복잡합니다.
질문은 내 Wegpage에서 저에게 연락하여 저에게 이메일을 작성할 수 있습니다.
이 프로젝트는 2 년간의 포기 후 살기로 돌아 왔습니다. 앞으로 몇 주 안에 모든 기능을 가장 최근의 개발로 업데이트하는 데 시간이 걸릴 것입니다. 여기에는 모든 정규식 업데이트 및 검색 엔진 동작의 변경 사항이 포함됩니다. 몇 주 후,이 프로젝트가 여기에 문서화 된대로 다시 작동 할 것으로 예상 할 수 있습니다.
Googlescraper는 Python 3에 작성되었습니다. Python 3.6 이상을 설치해야합니다. 마지막 주요 개발은 모두 Python 3.7로 이루어졌습니다. 예를 들어 Ubuntu 16.04 및 Python 3.7을 사용할 때는 공식 패키지에서 Python 3을 설치하십시오. 나는 Anaconda Python 분포를 사용합니다.
또한 Chrome 브라우저와 Selenium 모드의 Chromedriver를 설치해야합니다. 또는 Selenium 모드의 Firefox 브라우저 및 Geckodriver를 설치하십시오. 아래 지침을 참조하십시오.
PIP를 사용하여 Googlescraper를 편안하게 설치할 수도 있습니다.
virtualenv --python python3 env
source env/bin/activate
pip install GoogleScraper
지금 (2018 년 9 월) 이것은 권장하지 않습니다. 최신 Github 소스에서 설치하십시오.
때로는 치즈 샷에서 가장 새롭고 가장 멋진 것들을 사용할 수 없습니다 (https://pypi.python.org/pypi/pip). 따라서이 GitHub 저장소에있는 최신 소스에서 Googlescraper를 설치하고 싶을 것입니다. 다음과 같이 할 수 있습니다.
virtualenv --python python3 env
source env/bin/activate
pip install git+git://github.com/NikolaiT/GoogleScraper/
일부 기능과 예제는 예상대로 작동하지 않을 수 있습니다. 또한 앱이 실행된다고 보장하지 않습니다. PIP에서 설치하면 사용 가능한 버전을 산출 할 수 있다고 보장합니다.
여기에서 최신 Chromedriver를 다운로드하십시오 : https://sites.google.com/a/chromium.org/chromedriver/downloads
드라이버를 압축하고 어딘가에 저장 한 다음 Googlescraper 구성 파일에서 chromedriver_path scrape_config.py 에서 Driver chromedriver_path = 'Drivers/chromedriver' 저장 한 경로로 업데이트하십시오.
여기에서 최신 Geckodriver를 다운로드하십시오 : https://github.com/mozilla/geckodriver/releases
드라이버를 압축하고 어딘가에 저장 한 다음 Googlescraper 구성 파일에서 geckodriver_path scrape_config.py 에서 드라이버를 저장 한 경로로 geckodriver_path = 'Drivers/geckodriver' 저장 한 경로로 업데이트하십시오.
Googlescraper 구성 파일에서 다음 설정 scrape_config.py 값으로 업데이트하십시오.
# chrome driver executable path
# get chrome drivers here: https://chromedriver.storage.googleapis.com/index.html?path=2.41/
chromedriver_path = 'Drivers/chromedriver'
# geckodriver executable path
# get gecko drivers here: https://github.com/mozilla/geckodriver/releases
geckodriver_path = 'Drivers/geckodriver'
# path to firefox binary
firefox_binary_path = '/home/nikolai/firefox/firefox'
# path to chromium browser binary
chrome_binary_path = '/usr/bin/chromium-browser'
위에서 설명한대로 설치하십시오. 셀레늄 모드에서 Googlescraper를 사용하려면 Chrome/Firefox 용 Selenium 드라이버가 있는지 확인하십시오.
모든 옵션을 참조하십시오
GoogleScraper -h
HTTP 모드로 단일 키워드 "Apple"을 긁어냅니다.
GoogleScraper -m http --keyword "apple" -v info
헤드리스 모드에서 Chrome을 사용하여 셀레늄 모드의 파일 SearchData/5words 에있는 모든 키워드를 긁어냅니다.
GoogleScraper -m selenium --sel-browser chrome --browser-mode headless --keyword-file SearchData/5words -v info
들어있는 모든 키워드를 긁어 모으십시오
GoogleScraper -m http --keyword-file SearchData/some_words.txt --num-workers 5 --search-engines "bing,yahoo" --output-filename threaded-results.json -v debug
Google에서 키워드 "K2 Mountain"을 이미지 검색하십시오.
GoogleScraper -s "google" -q "K2 mountain" -t image -v info
이것은 아마도 Googlescraper의 가장 멋진 기능 일 것입니다. 중 하나 인 경우 초당 수천 개의 요청으로 긁어 낼 수 있습니다.
비동기 모드의 예 :
키워드 파일에서 키워드를 검색하여 SearchData/Marketing-Models-Brands.txt에서 Bing 및 Yahoo. 기본적으로 비동기 모드는 동시에 100 개의 요청을 스폰합니다. 이것은 초당 약 100 개의 요청을 의미합니다 (실제 연결에 따라 다릅니다 ...).
GoogleScraper -s "bing,yahoo" --keyword-file SearchData/marketing-models-brands.txt -m http-async -v info -o marketing.json
결과 (하나의 IP 주소에 대한 키워드가 너무 많기 때문에 부분 결과)를 파일 출력/마케팅 .json에서 검사 할 수 있습니다.
Googlescraper는 매우 복잡합니다. Googlescraper는 많은 검색 엔진을 지원하고 해당 검색 제공 업체의 HTML 및 JavaScript가 자주 변경되므로 Googlescraper가 일부 검색 엔진에서 작동하는 경우가 종종 있습니다. 이를 발견하려면 기능 테스트를 실행할 수 있습니다.
예를 들어 아래 테스트는 Google 및 Bing에 대한 스크래핑 세션을 실행하고 수집 된 데이터가 어느 정도 괜찮아 보이는 테스트입니다.
python -m pytest Tests/functional_tests.py::GoogleScraperMinimalFunctionalTestCase
Googlescraper는 Google 검색 엔진 결과 (및 기타 많은 검색 엔진 _ )를 쉽고 빠른 방식으로 구문 분석합니다. 이를 통해 찾은 모든 링크와 해당 타이틀 및 설명을 프로그래밍 방식으로 추출하여 스크래프 데이터를 추가로 처리 할 수 있습니다.
무제한 사용 시나리오가 있습니다.
우선 Googlescraper가 완전히 다른 두 가지 스크래핑 접근법을 사용한다는 것을 이해해야합니다.
urllib.request 또는 requests 모듈과 같은 낮은 수준의 HTTP 라이브러리로 스크래핑. 이것은 실제 브라우저에서 전송 된 HTTP 패킷을 시뮬레이션합니다.전자의 접근 방식이 먼저 구현되었지만, 검색 엔진은 쉽게 감지하는 방법이 없기 때문에 이후의 접근 방식은 훨씬 더 유망한 것으로 보입니다.
Googlescraper는 다음 기술/소프트웨어로 구현됩니다.
현재 다음 검색 엔진이 지원됩니다.
스크래핑은 중요하고 매우 복잡한 주제입니다. Google과 다른 검색 엔진 대기업은 스크레이퍼를 최대한 힘들게 만들기위한 강력한 성향을 가지고 있습니다. 검색 엔진 제공 업체가 로봇이 검색 엔진을 사용하고 있음을 감지하는 몇 가지 방법이 있습니다.
따라서 다루기위한 가장 큰 장애물은 JavaScript 감지 알고리즘입니다. Google이 JavaScript에서 무엇을하는지 모르겠지만 곧 더 조사한 다음 전략을 변경하는 것이 더 나은지 결정하고 JavaScript를 실행할 수있는 브라우저와 같은 환경에서 브라우저를 시뮬레이션하여 스크랩을하는 접근 방식 으로 전환 할 것입니다. 이러한 가상 브라우저 각각의 네트워킹은 실제 물리적 사용자 에이전트처럼 작동하도록 파괴되고 조작됩니다. 자원을 너무 많이 강조하지 않고 20 개의 브라우저 세션을 병렬로 처리 할 수 있어야한다고 확신합니다. 진짜 문제는 항상 좋은 프록시가 부족하다는 것입니다 ...
위에서 언급했듯이 urllib.request 또는 requests 모듈을 요청하고 네트워킹을 직접 수행 할 때 몇 가지 단점이 있습니다.
브라우저는 엄청나게 복잡한 소프트웨어 시스템입니다. Chrome에는 약 8 백만의 코드 라인과 Firefox도 10 LoC를 가지고 있습니다. 거대한 회사는 기술을 발전시키기 위해 많은 돈을 투자하고 (HTML5, CSS3, 새로운 표준) 각 브라우저는 고유 한 동작을 가지고 있습니다. 따라서 HTTP 요청으로 이러한 브라우저를 수동으로 시뮬레이션하는 것은 거의 불가능합니다. 이는 Google이 브라우징 사용에서 이상 및 불일치를 감지하는 다양한 방법을 가지고 있음을 의미합니다. 자바 스크립트의 역동적 인 특성만으로는 감지되지 않은 것을 긁어내는 것이 불가능합니다.
이것은 Python으로 실제 브라우저를 자동화하는 대체 접근 방식에 대해 울부 짖습니다. Google은 자체 기본 브라우저의 기능을 제한하는 인센티브가 가장 적기 때문에 Chrome 브라우저를 제어하는 것이 가장 좋습니다. 따라서 크롬을 파이썬으로 자동화하고 다른 프록시 세트로 여러 개의 독립적 인 인스턴스를 제어하는 방법이 필요합니다. 그런 다음 결과의 출력은 사용 된 프록시의 수와 선형으로 증가합니다 ...
이를위한 흥미로운 기술/소프트웨어 :
아마도 Googlescraper를 사용하는 가장 좋은 방법은 명령 줄에서 사용하고 다음과 같은 명령을 발사하는 것입니다.
GoogleScraper --keyword-file /tmp/keywords --search-engine bing --num-pages-for-keyword 3 --scrape-method selenium
여기서 셀은 스크래핑 모드를 '셀레늄'으로 표시합니다. 이것은 실제 브라우저가있는 googlescraper.py 스크랩을 의미합니다. 길고 많은 사이트를 긁을 수 있기 때문에 이것은 매우 강력합니다 (Google은 실제 브라우저를 차단하는 데 어려움이 있습니다). 플래그 --keyword-file 의 인수는 Keywords가 Newlines로 분리 된 파일이어야합니다. 그래서 : 모든 Google 쿼리마다 한 줄. 쉽지 않습니까?
또한 옵션 --num-pages-for-keyword Googlescraper가 각 키워드에 대해 3 개의 연속 페이지를 가져올 것임을 의미합니다.
예제 키워드 파일 :
keyword number one
how to become a good rapper
inurl:"index.php?sl=43"
filetype:.cfg
allintext:"You have a Mysql Error in your"
intitle:"admin config"
Best brothels in atlanta
스크래핑 후에는 동일한 디렉토리에 이름이 지정된 google_scraper.db 에 새 SQLITE3 데이터베이스가 자동으로 표시됩니다. 명령으로 데이터베이스를 열고 검사 할 수 있습니다.
GoogleScraper --shell
2 시간 안에 10'000 키워드를 긁어내는 것은 문제가되지 않아야합니다. 정말 미쳤다면 구성에서 최대 브라우저를 약간 더 높이 설정하십시오 (스크립트 파일 상단).
원한다면 플래그 --proxy-file 지정할 수 있습니다. 인수는 프록시가있는 파일과 다음 형식의 파일을 전달해야합니다.
protocol proxyhost:proxyport username:password
(...)
예:
socks5 127.0.0.1:1080 blabla:12345
socks4 77.66.55.44:9999 elite:js@fkVA3(Va3)
HTTP 모드에서 Googlescraper.py를 사용하려는 경우 (즉, RAW HTTP 헤더가 전송됨) 다음과 같이 사용하십시오.
GoogleScraper -m http -p 1 -n 25 -q "white light"
저에게 연락하는 느낌이 들면 그렇게하고 메일을 보내주세요. 내 블로그에서 내 연락처 정보를 찾을 수 있습니다.