웹 사이트에서 사용되는 모든 자바 스크립트의 이름을 찾는 방법을 찾고 있습니다. 요청 lib를 사용하여 웹 사이트의 소스 코드를 다운로드하는 것은 적합하지 않습니다. 사용되는 모든 javascript가 생성되지 않기 때문입니다. 예 : 웹 사이트 https://www.grantthornton.global/en/은 사용 된 모든 자바 스크립트에 대해 Chrome의 '네트워크'탭을 사용하여 Google 웹 로그 분석 (analytics.js)을 사용합니다.파이썬을 사용하여 웹 사이트에서 사용 된 모든 자바 스크립트를 자르십시오.
그러나 google-tag-manager를 통해 analytics.js가로드되므로 소스 코드만으로 analytics.js 사용을 확인할 수는 없습니다. 현재 저는 셀레늄을 사용하여 웹 사이트를로드하고 browsermob-proxy를 통해 모든 데이터를 기록합니다.
from selenium import webdriver
from browsermobproxy import Server
import pprint, time
server = Server("browsermob-proxy-2.1.4\\bin\\browsermob-proxy")
server.start()
proxy = server.create_proxy({'captureHeaders': True, 'captureContent': True, 'captureBinaryContent': True})
service_args = ["--proxy=%s" % proxy.proxy, '--ignore-ssl-errors=yes']
driver = webdriver.PhantomJS("phantomjs-2.1.1-windows\\bin\\phantomjs", service_args=service_args)
proxy.new_har()
driver.get('URL GOES HERE')
time.sleep(3)
all_requests = [entry['request']['url'] for entry in proxy.har['log']['entries']]
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(proxy.har)
편집 : 플로랑 B의 접근 방식에 따라 솔루션이보다 더 좋은 방법이 있나요
: 나는 다음의 URL (https://www.google-analytics.com/analytics.js 예)를 선택하여 액세스 한 모든 자바 스크립트를 확인할 수 있습니다.
from selenium import webdriver
import pprint, time
driver = webdriver.Chrome('chromedriver.exe')
driver.get("https://www.URLGOESHERE.com")
time.sleep(3)
scripts = driver.execute_script("""return window.performance.getEntriesByType("resource").filter(e => e.initiatorType === 'script').map(e => e.name.match(/.+\/([^?]+)/)[1]);""")
driver.close()
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(scripts)
당신이 당신의 코드 시련을 공유 할 수 webdriver 대신 phantomjs의 다운로드 할 필요가 크롬 webdriver로 대체되었습니다 ? – DebanjanB
죄송합니다. 질문이 일찍 게시되었습니다. 코드가 첨부되었습니다. –
특정 코드를 향상시킬 수 있는지 (예일 수도 있습니다) 또는 방법론이 올바른지 궁금하십니까? –