2016-09-09 10 views
0

私はこれらのリンクのリンクとタイトルをアニメのウェブサイトで抽出しようとしていますが、タグ全体を抽出することができるだけで、hrefとタイトルが必要です。リンクとタイトルのみを抽出する

Here`sコード使用しています:

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) 

やウェブサイトのHTMLをhere`sを:

<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> 

そして、これが出力されます。

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

Process finished with exit code 0 

Iすべてそのクラスのすべてのリンクとタイトル(エピソードとそのリンク)がほしいです。

ありがとうございます。あなたは「」タグと、属性の値をフェッチ「HREF」を除外することができるように

答えて

-1

だから何が起こっていますさあなたのリンク要素はアンカー<div>とclass = "last_episode"のすべての情報を持っていますが、これには "href"とtitleの "title"のリンクを保持するアンカーがたくさんあります。

コードを少し修正して、必要なものを手に入れましょう。

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 

出力の形態であろう[(HREF、タイトル)、(HREF、タイトル)........(HREF、タイトル)]

編集(説明):

だから何が起こっているであるあなたが

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

を行う際に「それは「DIV」とクラス「last_episode」とあなたに(HTMLページ内)すべての詳細を与えるが、今、このアンカーは異なるとアンカーの巨大なセットを保持していますhref "とタイトルの詳細なので、forループ(t複数のアンカー(<a>)と ".get()"を使用できます。

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

今回はより明確になりたいと思います。

+0

ちょっとお返事ありがとうございます、コードが動作していますが、コードがどのように動作し、なぜforループが最後にあるのか説明してください。 申し訳ありませんコードを編集したいのですが、私はそれを理解していないとできません:) – AbdulAziz

+0

AbdulAziz私は望ましい変更を行い、あなたが理解してくれた自分の希望を説明しようとしました –

+0

もう一度、今は理解は深まっていますが、出力を1行ではなく、1行でどのように出力するのですか? – AbdulAziz

1

ページ全体は、クラスのlist_episode 'が一つだけの要素を持っています

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'] 
関連する問題