Here ist die Seite, die ich versuche, dies zu tun. Es sind die Sprachleitungen von GLaDOS von Portal. Jede Zeile ist innerer "ich" HTML-Text sowie zwischen Anführungszeichen wie auf der Seite angezeigt. Sie haben jeweils einen direkten Download-Link mit der Aufschrift "Download". Ich versuche, die Stimmen in den MARY TTS Sprachsynthesizer here in einem von zwei Formaten zu bringen. Entweder jede Zeile in einer eigenen Textdatei mit dem Dateinamen, der dem Namen der WAV-Dateien entspricht, oder alle in einer Textdatei formatiert als (Dateiname "Zeile hier einfügen").Loop durch eine Seite von Sprachproben, Herunterladen jeder Probe und setzen Sie die Zeilen in eine Textdatei
Ich habe versucht, dies selbst zu tun, aber ich habe bereits 4 Stunden damit verbracht und habe nur ein kleines Stück Python-Code, der nicht funktioniert.
from bs4 import BeautifulSoup
import re
import urllib.request
soup = BeautifulSoup(urllib.request.urlopen("http://theportalwiki.com/wiki/GLaDOS_voice_lines"), "html.parser")
tags = soup.find_all('i')
f = open('Lines.txt', 'w')
for t in range(len(tags)):
f.write(tags[t] + '\n')
f.close()
Es gibt "Typeerror: nicht unterstützte Operandtyp (e) für +:. 'Tag' und 'str'"
Ich habe auch AutoHotKey versucht.
^g::
IEGet(Name="") ;Retrieve pointer to existing IE window/tab
{
IfEqual, Name,, WinGetTitle, Name, ahk_class IEFrame
Name := (Name="New Tab - Windows Internet Explorer") ? "about:Tabs"
: RegExReplace(Name, " - (Windows|Microsoft) Internet Explorer")
For wb in ComObjCreate("Shell.Application").Windows
If (wb.LocationName = Name) && InStr(wb.FullName, "iexplore.exe")
Return wb
} ;written by Jethrow
wb := IEGet()
IELoad(wb) ;You need to send the IE handle to the function unless you define it as global.
{
If !wb ;If wb is not a valid pointer then quit
Return False
Loop ;Otherwise sleep for .1 seconds untill the page starts loading
Sleep,100
Until (wb.busy)
Loop ;Once it starts loading wait until completes
Sleep,100
Until (!wb.busy)
Loop ;optional check to wait for the page to completely load
Sleep,100
Until (wb.Document.Readystate = "Complete")
Return True
}
For IE in ComObjCreate("Shell.Application").Windows ; for each open window
If InStr(IE.FullName, "iexplore.exe") ; check if it's an ie window
break ; keep that window's handle
; this assumes an ie window is available. it won't work if not
IE.Navigate("http://theportalwiki.com/wiki/GLaDOS_voice_lines")
While IE.Busy
Sleep, 100
Links := IE.Document.Links
Inner := FileOpen("C:\Users\Johnson\Desktop\GLaDOS Voice", "w")
Rows := IE.Document.All.Tags("table")[4].Rows
Loop % Rows.Length
Inner.Write(Row[A_Index].InnerText . "`r`n")
Inner.Close()
Return
Soweit ich das beurteilen kann, funktioniert das Skript AutoHotKey absolut nichts. Ich benutze den Hotkey und nichts passiert.
Ich würde Lua bevorzugen, weil es konsistent ist und ich es verstehe.
Sehr nützlich, danke! Wie bekomme ich jetzt die Download-Links? Ich habe versucht, das "i" durch "src", "Tags" durch "att", "f" durch "g" und "t" durch "r" zu ersetzen, und die Downloads-Datei bleibt leer. –
@ZacharyJohnson Siehe meine Bearbeitung. – smarx