Test med att hämta alla bilder på hemsida
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import os
|
||||
import re
|
||||
from bs4 import BeautifulSoup
|
||||
import requests
|
||||
from urllib.parse import urljoin
|
||||
|
||||
def ladda_ner_bilder(url):
|
||||
# Hämta HTML-sidan
|
||||
svar = requests.get(url)
|
||||
soup = BeautifulSoup(svar.text, 'html.parser')
|
||||
|
||||
# Hitta alla bilder
|
||||
bilder = []
|
||||
for img in soup.find_all('img'):
|
||||
src = img.get('src')
|
||||
if src:
|
||||
bilder.append(src)
|
||||
|
||||
# Hantera inline-bilder i base64
|
||||
INLINE_BILD_MÖNSTER = r'data:image/(.*?);base64,(.*)'
|
||||
matcher = re.compile(INLINE_BILD_MÖNSTER)
|
||||
for match in matcher.finditer(svar.text):
|
||||
bild_typ = match.group(1)
|
||||
bild_data = match.group(2)
|
||||
bilder.append(f"data:{bild_typ};base64,{bild_data}")
|
||||
|
||||
# Ladda ner bilderna
|
||||
bild_katalog = "bilder"
|
||||
if not os.path.exists(bild_katalog):
|
||||
os.makedirs(bild_katalog)
|
||||
|
||||
for bild_url in bilder:
|
||||
if not bild_url.startswith('http'):
|
||||
bild_url = urljoin(url, bild_url)
|
||||
|
||||
svar = requests.get(bild_url)
|
||||
if svar.status_code == 200:
|
||||
filnamn = os.path.basename(bild_url)
|
||||
fil_sökväg = os.path.join(bild_katalog, filnamn)
|
||||
with open(fil_sökväg, 'wb') as f:
|
||||
f.write(svar.content)
|
||||
print(f"Bilden {filnamn} har laddats ner till {bild_katalog}.")
|
||||
|
||||
def main():
|
||||
url = input("Ange URL till sidan från vilken du vill hämta bilder: ")
|
||||
if not url.startswith('http'):
|
||||
url = 'http://' + url
|
||||
try:
|
||||
ladda_ner_bilder(url)
|
||||
except Exception as e:
|
||||
print(f"Fel inträffade: {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user