2017-12-31 133 views
-1

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'을 참조 할 수 있습니다. – PRMoureu

+0

HTML 요소, 속성 및 값과 제목과 링크가 모두 다르므로 하나의 루프에서 할 수없는 이유는 무엇입니까 – Ashwin

+0

그렇지만 동일한 선택자를 사용하여 노드를 나열하기 때문에 생각보다 덜 다를 수도 있습니다. 작은 샘플이 여기에 도움이 될 수 있습니다. – PRMoureu

답변

0

난 당신이 이름을 포함하는 두 파이썬 목록을 만들기 위해 추천 할 것입니다. 하나의 목록에서 각 '제목'을 추가하고 다른 하나는 '링크'를 추가하십시오. 이러한 목록은 중첩 된 for 루프의 일부입니다. 결국 html 스 니펫에 해당하는 속성을 변경하려면 % s 연산자를 사용해야합니다.