Ich versuche, mein Programm so zu konfigurieren, dass jede regex.findAll() -Methode korrekt in den HTML-Parser eingeht, wie im Code-Ausschnitt unten zu sehen ist . Das Problem ist, dass ich bekommePython-UnboundLocalError: lokale Variable, auf die vor der Zuweisung verwiesen wird - Reguläre Ausdrücke/if else
UnboundLocalError: local variable referenced before assignment
für headingList und imageList, je nachdem, wie ich meinen Code ändern. Ich denke, das liegt daran, dass die if-Anweisungen nicht über den ersten if-Block hinausgehen, wie es wahr ist. Ich versuchte, if heading and image and description and storyLink and date:
zu benutzen und alle Variablen innerhalb der einen für Schleife zu verursachen, aber wenn ich das Programm laufe, passiert nichts, was auch immer. Ich denke, es ist die Struktur meines Codes, oder es kann sogar der reguläre Ausdruck für die Bildvariable sein, die das Problem verursacht, aber ich denke nicht. Jede Hilfe wäre sehr dankbar :)
EDIT: HTML snippet being used to parse from regex
def extractNews():
selection = listbox.curselection()
if selection == (0,):
# Read the webpage:
response = urlopen("file:///E:/University/IFB104/InternetArchive/Archives/Sun,%20October%201st,%202017.html")
html = response.read()
#regex
heading = findall((r'<h2 class="post-title"><a href="(.*?)".*?>(.*?)</a></h2>'), str(html))
image = findall((r'<span data-omni-sm-delegate="(.*)">(\n|\r)\s+<a href="(.*)></a>(\n|\r)\s+</span>'), str(html)) #<span data-omni-sm-delegate="(.*)">(\n|\r)\s+<a href="(.*)></a>(\n|\r)\s+</span>
description = findall((r'<h2 class="post-title"><a href="(.*?)".*?>(.*?)</a></h2>'), str(html))
storyLink = findall((r'<h2 class="post-title"><a href="(.*?)".*?>(.*?)</a></h2>'), str(html))
date = findall((r'<h2 class="post-title"><a href="(.*?)".*?>(.*?)</a></h2>'), str(html))
if heading:
headingList = []
for link, title in heading:
headingVariable = "%s" % (title)
headingList.append(headingVariable)
if image:
imageList = []
for link, title in image:
imageVariable = "%s" % (title)
imageList.append(imageVariable)
if description:
descriptionList = []
for link, title in description:
descriptionVariable = "%s" % (title)
descriptionList.append(descriptionVariable)
if storyLink:
storyLinkList = []
for link, title in storyLink:
storyLinkVariable = "%s" % (title)
storyLinkList.append(storyLinkVariable)
if date:
dateList = []
for link, title in date:
dateVariable = "%s" % (title)
dateList.append(dateVariable)
html_str = ('<!DOCTYPE html>\n'
'<html>\n'
'<head>\n'
'<title>TechCrunch Archive - Sun, October 1st, 2017</title>\n'
'</head>\n'
'<body>\n'
'<h1>' + headingList[0] + '</h1>\n'
'<a href="'+ imageList[0]+'></a>\n'
'<p>description goes here</p>\n'
'<p>full story link goes here</p>\n'
'<p>date goes here</p>\n'
'<br><br>\n'
'<h1>' + headingList[1] + '</h1>\n'
'image goes here\n'
'<p>description goes here</p>\n'
'<p>full story link goes here</p>\n'
'<p>date goes here</p>\n'
'<br><br>\n'
'<h1>' + headingList[2] + '</h1>\n'
'image goes here\n'
'<p>description goes here</p>\n'
'<p>full story link goes here</p>\n'
'<p>date goes here</p>\n'
'<br><br>\n'
'</body>\n'
'</html>)')
Html_file = open("ExtractedContent/Sun, October 1st, 2017 - Extracted.html", "w")
Html_file.write(html_str)
Html_file.close()
Sie haben überprüft, dass die Werte von "Überschrift" und "Bild" sind, was Sie erwarten, richtig? –
Wenn ich den gleichen regulären Ausdruck in Überschrift für Bild verwenden, tritt das Problem nicht auf und importiert fein. Wenn jedoch mein versuchte Regex-Ausdruck verwendet wird, wird der Fehler zurückgegeben. Ich dachte, dass dies der Fall sein könnte, aber ich dachte nicht, dass ein falscher regulärer Ausdruck das Problem verursachen würde. Ich habe damit gerechnet, dass nur der falsche Inhalt importiert wird. Weißt du, warum dies der Fall sein könnte? – mattappdev
Welche Werte erhalten Sie für "Überschrift" und "Bild", und unterscheiden sie sich von dem, was Sie erwartet haben? –