Ich versuche, Scraping zu üben, indem Sie auf eine Video-Website gehen und alle Titel der Videos auf der Homepage scraping. Mein einziges Problem ist, wenn der Titel zu lang ist, wird er mit der .string-Funktion in BeautifulSoup abgekürzt.Python: Schöne Suppe: Kann nicht einen vollständigen Titel von Parsing
Hier ist Beispiel HTML für die Analyse:
<head>...</head>
<body class="home">
<div id="main">
<div id="content">
<div id="vid_28" class="thumb-block ">
<div class="thumb-inside">...</div>
<p>
<a href="/vid_28/0/this_is_a_great_video_"
title="this is a great video">this is a great vi...</a>
</p>
</div>
</div>
</div>
</body>
Hier ist der Code, den ich mit den Titel zu drucken versucht bin:
import requests
from bs4 import BeautifulSoup
url = "example"
r = requests.get(url)
soup = BeautifulSoup(r.content, "lxml")
links = soup.find_all("div", {"class":"thumb-block"})
for link in links:
for tag in link.find_all("a")
print(tag.string)
Dieser Code funktioniert, wie ich es will, es sei denn es Druck ist die Saite "das ist ein toller Vi ...", der kurz geschnitten ist.
Wenn Sie im HTML bemerken, wird der Text nach "title =" nie kurz geschnitten.
Wie kann ich meinen Code ändern, um den Text in Klammern nach dem "title =" innerhalb des Elements zu erhalten, anstatt den abgeschnittenen Text zu erhalten?
Warum greifen Sie dann nicht auf das Titelattribut statt auf ".string" zu? –
Es ist, weil Sie versuchen, auf die Zeichenkette zuzugreifen, die in Ihrem Fall "das ist ein großes vi ..." ist und es das druckt. Versuchen Sie stattdessen, auf das Titelattribut zuzugreifen. – ChaoticTwist
Ich habe versucht, "tag.string" durch "tag.title" zu ersetzen, alles was es tut, ist "None" in meiner Konsole. Ich habe die Dokumentation gelesen, aber ich sehe nichts, was darauf hindeutet, wie man neben dem eigentlichen Tag des Titels andere Attribute aufruft. – Destroxia