Eu escrevi um script em Python que pode fazer o que você quer:
#!/usr/bin/env python2
# -*- coding: ascii -*-
"""list_assets.py"""
from bs4 import BeautifulSoup
import urllib
import sys
import jsbeautifier
import copy
# Define a function to format script and style elements
def formatted_element(element):
# Copy the element
formatted_element = copy.copy(element)
# Get beautified element text
formatted_text = jsbeautifier.beautify(formatted_element.text)
# Indent all of the text
formatted_text = "\n".join([" " + line for line in formatted_text.splitlines()])
# Update the script body
formatted_element.string = "\n" + formatted_text + "\n "
# Return the beautified element
return(formatted_element)
# Load HTML from a web page
html = urllib.urlopen(sys.argv[1]).read()
# Parse the HTML
soup = BeautifulSoup(html, "html.parser")
# Extract the list of external image URLs
image_urls = [image['src'] for image in soup.findAll('img') if image.has_attr('src')]
# Extract the list of external CSS URLs
css_urls = [link['href'] for link in soup.findAll('link') if link.has_attr('href')]
# Extract the list of external JavaScript URLs
script_urls = [script['src'] for script in soup.findAll('script') if script.has_attr('src')]
# Extract the list of internal CSS elements
styles = [formatted_element(style) for style in soup.findAll('style')]
# Extract the list of internal scripts
scripts = [formatted_element(script) for script in soup.findAll('script') if not script.has_attr('src')]
# Print the results
print("Images:\n")
for image_url in image_urls:
print(" %s\n" % image_url)
print("")
print("External Style-Sheets:\n")
for css_url in css_urls:
print(" %s\n" % css_url)
print("")
print("External Scripts:\n")
for script_url in script_urls:
print(" %s\n" % script_url)
print("")
print("Internal Style-Sheets:\n")
for style in styles:
print(" %s\n" % style)
print("")
print("Internal Scripts:\n")
for script in scripts:
print(" %s\n" % script)
Estes são os pacotes (dignos de nota) que usei:
-
urllib para carregar o HTML de uma página web
-
BeautifulSoup para analisar o HTML
-
jsbeautifier para embelezar / formatar o código JavaScript e CSS incorporado
O script imprime as URLs para recursos externos e as próprias tags de elementos (aperfeiçoadas / embelezadas) para recursos internos. Eu fiz algumas escolhas estilísticas fora do manguito sobre como formatar os resultados que podem ser facilmente modificados ou melhorados.
Para vê-lo em ação, aqui está um exemplo de arquivo HTML ( assets.html
):
<!doctype html>
<html lang=en>
<head>
<meta charset=utf-8>
<title>assets.html</title>
<link rel="stylesheet" type="text/css" href="mystyle.css">
<style>
body {
background-color: linen;
}
h1 {
color: maroon;
margin-left: 40px;
}
</style>
<script src="myscripts.js"></script>
</head>
<body>
<script>alert( 'Hello, world!' );</script>
<img src="https://www.python.org/static/community_logos/python-logo.png"><p>I'mthecontent</p></body></html>
Vejacomopodemosexecutaroscript(emumarquivolocal):
python list_assets.py assets.html
E aqui está a saída:
Images:
https://www.python.org/static/community_logos/python-logo.png
External Style-Sheets:
mystyle.css
External Scripts:
myscripts.js
Internal Style-Sheets:
<style>
body {
background - color: linen;
}
h1 {
color: maroon;
margin - left: 40 px;
}
</style>
Internal Scripts:
<script>
alert('Hello, world!');
</script>
Finalmente, aqui estão algumas postagens que eu usei como referências e que você pode achar úteis: