Ich bin neu im Programmieren und versuche, Bilder und PDFs von einer Website herunterzuladen. Im Quellcode sind die Elemente, die ich brauche, in Options-Tags mit partiellen URLs. Die Website listet diese Elemente in einem Dropdown-Menü auf und sie werden in einem iframe angezeigt, aber jedes Element kann auf seiner eigenen Seite mit der vollständigen URL geöffnet werden.Ändern einer geschabten URL und Ändern der Erweiterung
Bis jetzt findet mein Code die Optionen, hängt die partielle URL an die Basisadresse der Seite an, um die vollständige URL für jede Option zu erstellen, und entfernt das abschließende "/" aus den .tif- und .TIF-URLs und fügt ein " .pdf ".
Für die .tif und .TIF URLs muss ich jedoch "konvertieren" in "pdf" ändern, um sie auf einer neuen Seite zu öffnen. Gibt es eine Möglichkeit, dies nur für die URLs .tif.pdf und .TIF.pdf zu tun, während die anderen unverändert bleiben?
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import os
my_url = 'http://example.com'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
options = page_soup.findAll("select",{"id":"images"})[0].findAll("option")
values = [o.get("value") for o in options]
split_values = [i.split("|", 1)[0] for i in values]
# The option value is split to separate the url from its label
# <option value="/convert/ASRIMG/new/hop.TIF/|New Form"></option>
new_val = []
for val in split_values:
ext = os.path.splitext(val.rstrip('/'))[-1]
new_ext = ext
if ext.lower() == '.tif':
new_ext += '.pdf'
new_val.append(val.rstrip('/').replace(ext, new_ext))
for i in range (len(new_val)):
image_urls = ('http://example.com' + new_val[i])
Mein aktuelles Ergebnis:
print (new_val)
/ASRIMG/good.jpg
/ASRIMG/foo/bar1.jpg
/ASRIMG/foo/bar2.jpg
/ASRIMG/foo/bar3.jpg
/convert/ASRIMG/new/hop.TIF.pdf
/convert/REG/green1.tif.pdf
/convert/REG//green2.tif.pdf
/convert/SHIP/green3.tif.pdf
/convert/SHIP/green4.tif.pdf
/convert/SHIP/green5.tif.pdf
/SKETCHIMG/001.png
/SKETCH/002.JPG
print (image_urls)
http://example.com/ASRIMG/good.jpg
http://example.com/ASRIMG/foo/bar1.jpg
http://example.com/ASRIMG/foo/bar2.jpg
http://example.com/ASRIMG/foo/bar3.jpg
http://example.com/convert/ASRIMG/new/hop.TIF.pdf
http://example.com/convert/REG/green1.tif.pdf
http://example.com/convert/REG//green2.tif.pdf
http://example.com/convert/SHIP/green3.tif.pdf
http://example.com/convert/SHIP/green4.tif.pdf
http://example.com/convert/SHIP/green5.tif.pdf
http://example.com/SKETCHIMG/001.png
http://example.com/SKETCH/002.JPG
Was ich brauche:
http://example.com/ASRIMG/good.jpg
http://example.com/ASRIMG/foo/bar1.jpg
http://example.com/ASRIMG/foo/bar2.jpg
http://example.com/ASRIMG/foo/bar3.jpg
http://example.com/pdf/ASRIMG/new/hop.TIF.pdf
http://example.com/pdf/REG/green1.tif.pdf
http://example.com/pdf/REG//green2.tif.pdf
http://example.com/pdf/SHIP/green3.tif.pdf
http://example.com/pdf/SHIP/green4.tif.pdf
http://example.com/pdf/SHIP/green5.tif.pdf
http://example.com/SKETCHIMG/001.png
http://example.com/SKETCH/002.JPG
Dank für Ihre schnelle Antwort danken. Ich habe diesen Code ausprobiert, aber er fügte allen URLs '.tif.pdf' hinzu. Zusätzlich zu '.tif.pdf' (was gut ist), habe ich:' .jpg.tif.pdf', '.TIF.tif.pdf' und' png.tif.pdf' (was mir einen Fehler gibt). – shybr
Bearbeitet den Code zum Reparieren von '.TIF /'. Was ist die erwartete Ausgabe für '.jpg.tif' und' .png.tif'? –
Die '.jpg',' .JPG' und '.png' sollten sich nicht ändern. Nur '.TIF /' und '.tif /' ändern sich zu '.TIF.pdf' und' .tif.pdf' – shybr