私は、ウェブサイトで使用されているすべてのjavascriptの名前を判別する方法を探しています。リクエストlibを使用してウェブサイトのソースコードをダウンロードするのは適切ではありません。これは、使用されるすべてのjavascriptを生成しないためです。 ウェブサイトhttps://www.grantthornton.global/en/は、使用されているすべてのjavascriptでchromeの[ネットワーク]タブを使用しているため、Googleアナリティクス(analytics.js)を使用しています。Pythonを使用してウェブサイトで使用されているすべてのjavascriptをスクラップします
analytics.jsがgoogle-tag-managerを通じて読み込まれるため、ソースコードだけでanalytics.jsの使用を判断することはできません。 私の現在のアプローチは、セレンを使ってウェブサイトをロードし、すべてのデータをbrowsermob-proxyで記録することです。私は、URLをチェックすることによって、アクセスされたすべてのJavaScript(例:https://www.google-analytics.com/analytics.js)を確認することができます
をこれよりも良い方法はあります:
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)
はEDIT: ソリューションフロランBのアプローチに基づきます。 webdriverをはphantomjsの代わりにダウンロードする必要があるクロムwebdriverを置き換えられています
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)
あなたはあなたのコードのトライアルを共有することができます? – DebanjanB
申し訳ありませんが、私は早期に質問を掲載しました。コードが添付されています。 –
特定のコードを改善できるか(おそらくはい)、あるいはあなたの方法論が健全かどうか疑問に思っていますか? –