2017-12-31 293 views
-1

pythonの新機能とWebスクレイピングの学習。このようなサイトからタイトルとリンク(ないタイトルリンク)をこすりしようとしています:どのように出力として複数のリンクの問題を解決するには、サイトを掻きながら、Pythonを使用して?

  Title 1 
      Link 1 

      Title 2 
      Link 2 

      Title 3 
      Link 3 

が、問題は、このように行うことができないのですが、私は(リンク)ループのネストでこれを実行しようとしましたinside for loop(title)しかし、これは上記のようにタイトルを表示するが、このようにすべてのタイトルのリンクを表示する。

  Title 1 
      Link 1 
      Link 2 
      Link 3 


      Title 2 
      Link 1 
      Link 2 
      Link 3 


      Title 3 
      Link 1 
      Link 2 
      Link 3 

私にはこの問題を解決するためのすべてが運がありません!誰でも助けてもらえますか?

この問題を解決するためにセットを追加できますか?セットは重複を避けるため、役立つかもしれないと考えているからです。

私のコードは次のようになります。

import requests 
from bs4 import BeautifulSoup 

def scrape(url): 
    source_code = requests.get(url) 
    text = source_code.text 
    soup = BeautifulSoup(text) 
    for title in soup.findAll("html_element", {"attribute": "value "}):  #loop for title 
     tit = title.string 
     print("\n",tit) 
     for link in soup.findAll("html_element", {"attribute": "value "}): #loop for links 
      href = link.get("href") 
      print(href) 
      #break 


scrape("http://www.website.com/") 
+0

htmlの小さな例を追加できますか?たぶん、最初のループで 'title 'を直接参照して2回繰り返さなくてもリンクを得ることができます – PRMoureu

+0

HTMLの要素、属性、値はタイトルとリンクが異なるため、1つのループではできません。 – Ashwin

+0

そうですが、ノードをリストするために同じセレクターを使用しているので、思ったよりもそれほど差はありません。小さなサンプルがここで助けになるかもしれない – PRMoureu

答えて

0

は、私はあなたがこれらの名前を含む二つのPythonのリストを作ることをお勧めします。 1つのリストにそれぞれの「タイトル」を追加し、もう1つのリストに「リンク」を追加します。これらのリストは、ネストされたforループの一部になります。最後に、%s演算子を使用してhtmlスニペットに対応する属性を変更する必要があります。

関連する問題