2016-09-09 9 views
0

Ich versuche, Links und Titel für diese Links in einer Anime-Website zu extrahieren, aber ich kann nur das ganze Tag extrahieren, ich will nur die href und den Titel.Nur Links und Titel extrahieren

Hier `s der Code verwende:

import requests 
from bs4 import BeautifulSoup 

r = requests.get('http://animeonline.vip/info/phi-brain-kami-puzzle-3') 
soup = BeautifulSoup(r.content, "html.parser") 
for link in soup.find_all('div', class_='list_episode'): 
    href = link.get('href') 
    print(href) 

Und Hier` s auf der Website html:

<a href="http://animeonline.vip/phi-brain-kami-puzzle-3-episode-25" title="Phi Brain: Kami no Puzzle 3 episode 25"> 
        Phi Brain: Kami no Puzzle 3 episode 25     <span> 26-03-2014</span> 
     </a> 

Und dies ist die Ausgabe:

C:\Python34\python.exe C:/Users/M.Murad/PycharmProjects/untitled/Webcrawler.py 
None 

Process finished with exit code 0 

, dass Alles, was ich Wollen sind alle Links und Titel in dieser Klasse (Episoden und deren Links)

Danke.

Antwort

-1

Also, was passiert ist , Ihr Link-Element hat alle Informationen in Anker <div> und class = "last_episode", aber dies hat viele Anker darin, die den Link in "href" und Titel in "title" enthält.

Ändern Sie einfach den Code ein wenig und Sie werden haben, was Sie wollen.

import requests 
from bs4 import BeautifulSoup 

r = requests.get('http://animeonline.vip/info/phi-brain-kami-puzzle-3') 
soup = BeautifulSoup(r.content, "html.parser") 
for link in soup.find_all('div', class_='list_episode'): 
    href_and_title = [(a.get("href"), a.get("title")) for a in link.find_all("a")] 
    print href_and_title 

Ausgabe in Form sein wird [(href, Titel), (href, Titel), ........ (href, Titel)]

Edit() Erklärung:

Also, was geschieht, ist, wenn Sie das tun

soup.find_all('div', class_='list_episode') 

Es gibt Ihnen alle Details (in hTML-Seite) mit „div“ und der Klasse „last_episode“ aber jetzt hält dieser Anker einen großen Satz von Anker mit verschiedenen " href "und Titeldetails, so dass wir eine for - Schleife (t Hier können mehrere Anker (<a>)) und ".get()" sein.

href_and_title = [(a.get("href"), a.get("title")) for a in link.find_all("a")] 

Ich hoffe, es ist dieses Mal klarer.

+0

hey danke für die Antwort der Code funktioniert, aber kannst du bitte erklären, wie der Code funktioniert und warum die for-Schleife am Ende, und ist es dann schwierig, in Zeilen zu drucken ?? Entschuldigung Ich würde gerne Ihren Code bearbeiten, aber ich kann es nicht tun, wenn ich es nicht verstehe :) – AbdulAziz

+0

AbdulAziz Ich machte die wünschenswerten Änderungen und versuchte, mein Selbst zu erklären hoffe, dass Sie es verstanden –

+0

Danke nochmal, denke ich habe ein besseres Verständnis jetzt, aber immer noch, wie drucke ich die Ausgabe in Zeilen anstelle von nur einer Zeile? – AbdulAziz

1

Die gesamte Seite hat nur ein Element mit der Klasse ‚list_episode‘, so dass Sie die 'A'-Tags herauszufiltern und dann den Wert für das Attribut ‚href‘ holen:

In [127]: import requests 
    ...: from bs4 import BeautifulSoup 
    ...: 
    ...: r = requests.get('http://animeonline.vip/info/phi-brain-kami-puzzle-3') 
    ...: soup = BeautifulSoup(r.content, "html.parser") 
    ...: 

In [128]: [x.get('href') for x in soup.find('div', class_='list_episode').find_all('a')] 
Out[128]: 
[u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-25', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-24', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-23', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-22', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-21', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-20', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-19', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-18', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-17', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-16', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-15', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-14', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-13', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-12', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-11', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-10', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-9', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-8', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-7', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-6', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-5', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-4', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-3', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-2', 
u'http://animeonline.vip/phi-brain-kami-puzzle-3-episode-1'] 
Verwandte Themen