Ich arbeite an einer Aufgabe, in der ich einen Web-Crawler erstellen soll, der eine Eingabe-URL liest, jeden Link auf der Seite besucht und die Titel der Seiten druckt. Ich habe nicht viel Erfahrung mit Python, aber ich hatte etwas Hilfe, lesen Sie durch eine Menge von anderen Programmen Leute geschrieben haben, und derzeit haben diese:Wie finden und drucken Sie die Seitentitel von HTML-Links von einer URL in Python 3.5?
from html.parser import HTMLParser
import urllib.request
class parseText(HTMLParser):
def handle_starttag(self, tag, attrs):
print("Start tag:", tag)
for attr in attrs:
print(" attr:", attr)
if tag == "href" in attrs:
print(tag)
pageParse = parseText()
req = urllib.request.Request('http://schoolcraft.edu')
pageRequest = urllib.request.urlopen(req)
pageRequestString = pageRequest.read().decode()
pageParse.feed(pageRequestString)
pageParse.close()
for item in urlText:
print (item)
So weiß ich, dass sie alle die Druckerei Website-Attribute, anstatt nur den Titel, aber ich bin mir nicht sicher, wie man nur den Titel druckt. Kann ich das HTMLParser-Modul weiterhin verwenden?
Jede Hilfe ist willkommen.
EDIT:
habe ich versucht, die BeautifulSoup Code @Padraic in python35.exe geschrieben und ich bekam die folgende
Ich änderte soup = BeautifulSoup(urllib.request.urlopen(base).read())
zu soup = BeautifulSoup(urllib.request.urlopen(base).read(), "html.parser")
und soup = BeautifulSoup(urllib.request.urlopen(url).read())
-soup = BeautifulSoup(urllib.request.urlopen(url).read(), "html.parser")
. Dies brachte mich dazu, das gleiche zu bekommen, aber ohne den ersten Fehler, der mir sagte "html.parser"
hinzuzufügen.
Do Sie müssen eingebaute Bibliotheken verwenden? Sie würden auch wollen, wenn "href" in attr: 'nicht' wenn Tag == "href" in attrs ' –
Mein Professor sagte nicht, also glaube ich nicht. –
Wir können es mit html.parser tun, aber es ist viel einfacher mit bs4 –