Html에서 불러오고 싶은 요소가 중복 일 때 하나만 가져오려면 어떻게 해야 하나요?

조회수 453회

구글링을 하고 official Document 를 읽어보아도 해결이 되지 않아 질문합니다. 문제는 밑에와 같습니다.

파싱한 후 아래 출력결과에서 href 에 해당하는 링크 주소 하나만을 출력되게 하려고 합니다.

// 코드문입니다.

site = requests.get("http://www.alba.co.kr/") 

alba = BeautifulSoup(site.text, 'html.parser') 

brands = list(alba.find(id = "MainSuperBrand").find('ul', {"class" : "goodsBox"}). find_all('a', {"class" : "goodsBox-info"}))

for b in brands : 
    if "http" in b : 
   `b = b.select('a.href') 
       print(b)

파싱된 출력문에서 첫 번째 태그의 href 요소를 추출하려 합니다.

[
<li class="first impact"><div class="B_MyAd_"></div> 
<a class="goodsBox-info" href="http://barogo.alba.co.kr/">*
 <span class="logo"> <img alt="(주)바고"src="//imagelogo.alba.kr/data_image2/logo/brand/
20200916174910805.gif"/> </span> <span class="company">(주)바로고</span> <span class="title"><span>바로고 신규 라이더 모집</span></span> <span class="wrap"> <span class="local">전국</span> <span class="pay"><span class="payLetter">공고별확인</span> <span class="payIcon talk"></span></span> </span> </a>
<a class="brandHover" href="http://barogo.alba.co.kr/"  </a></li>, . ,,,,,,.

리스트 문입니다.  ] 

li Class 밑에 있는 요소들 중 태그 <a> 에서 href 가 두개가 있는데 이럴 경우 어떻게 하나만 출력되게 할 수 있는지 궁금합니다.

4 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    어떤 형식으로 반환되는지 확인해보세요.

    a = soup.find_all('a')
    print(a)
    
    내용 추가
    

    안된다구요?? 정말 안되는걸까요?? 앞서 설명해줬던 방식이 아닌 잘못된 방식으로 하고 있어서는 아니구요??

    aaa는 리스트로 반환되는데 대체 resultset이라는 결과는 어떻게 나온 건가요??

    a = requests.get("http://www.alba.co.kr/")
    
    aa = BeautifulSoup(a.text, 'html.parser')
    
    aaa = list(aa.find(id = "MainSuperBrand").find('ul', {"class" : "goodsBox"}).find_all('a', {"class" : "goodsBox-info"}))
    
    
    for aaaa in aaa :
        print()
        print(aaaa['href'])
    
    • resultSet 이라고 나옵니다. ramrr44 2021.12.15 11:47
    • 전체 코드 올려보실래요?? 초보자 2021.12.15 13:51
    • site = requests.get("http://www.alba.co.kr/") alba = BeautifulSoup(site.text, 'html.parser') brands = list(alba.find(id = "MainSuperBrand").find('ul', {"class" : "goodsBox"}). find_all('a', {"class" : "goodsBox-info"})) #print(brands) for b in brands : if "http" in b : b = b.select('a.href') print(b) ramrr44 2021.12.15 14:22
    • 코드는 이렇습니다. 첫번째 a 태그 안의 href 만 가져오려하는데 참 이거.... ramrr44 2021.12.15 14:23
    • 보기 힘듭니다. 본문에 넣어주세요. 초보자 2021.12.15 14:38
    • 답글에 달아두었어요. ramrr44 2021.12.15 14:57
    • 제코드로는 계속해서 태그까지 같이 추출되네요 ramrr44 2021.12.15 14:57
    • .. brands를 출력해서 어떤 형식인지 확인해보라고 했더니 뭐하고 계신 건가요;; 그리고 제가 이전에 달아드린 답변에서 href 속성을 출력하기 위해 어떤 명령어를 사용했는지 확인해보세요. 초보자 2021.12.15 15:16
    • 위에 올린건 수정한거구요. brands 는 resultSet이라는 형식으로 나왔고, 올려주신 것처럼 (b['href'] << 태그에서 속성 뽑기 위해서. ) 태그에서 속성 뽑기 위해 b['href'] 처럼 하여도 출력결과는 같아요. 그래서 select을 넣어봤는데 select 도 결과는 같습니다. ramrr44 2021.12.15 16:16
    • 수정내용 확인 요망 초보자 2021.12.15 16:31
    • 답변 이미지 확인 바랍니다. ramrr44 2021.12.15 16:44
    • repl 에서는 정상적으로 되네요, 하아.... 제 VScode 에서만 저렇게 되네요. 감사합니다. ramrr44 2021.12.15 16:51
  • 파이썬 BeautifulSoup 이시면.. find라는 함수도 있어요 한번 찾아보셔요

  • 코드는 다음과 같습니다.

    site = requests.get("http://www.alba.co.kr/")
    
    alba = BeautifulSoup(site.text, 'html.parser')
    
    brands = list(alba.find(id = "MainSuperBrand").find('ul', {"class" : "goodsBox"}).find_all('a', {"class" : "goodsBox-info"}))
    
    
    for b in brands :
      if "http" in b : 
        b = b.select('a.href')
      print(b)
    
    

    추출하려고 하는 파싱된 html 입니다.

    <a class="goodsBox-info" href="http://dadam.alba.co.kr/"> 
    <span class="logo"> <img alt="삼대족발" src="//image-logo.alba.kr/data_image2/logo/brand/20211125132816761.gif"/> </span> 
    <span class="company">삼대족발</span>
     <span class="title">
    <span>전국 직원 및 아르바이트생 모집</span></span> 
    <span class="wrap"> 
    <span class="local">전국</span> 
    <span class="pay"><span class="payLetter">공고별 확인</span>
     <span class="payIcon talk"></span></span> </span> </a>
    
  • 이미지

    저도 수정 해 주신 내용으로 시도를 했었는데, 링크주소는 정상적으로 출력이 되나, 이미지와 같이 태그문도 중복으로 같이 출력이 되더라구요.

    그래서 저 중복된 내용도 안 나오게 하려고 한 번 더 태그 안에서 뭔가를 더 해주어야 하는게 아닐까 싶어서 질문을 올렸어요.
    저도 왜 태그가 링크 주소위에 중복되서 나오는지 모르겠습니다.

    • 정상적으로 링크 텍스트만 출력되는 이미지를 올려놓으셨네요. 초보자 2021.12.15 16:48
    • 위에 태그 까지 같이 나오길래 뭔가 이상해서 repl에서 해 봤는데 정상으로 나옵니다. 저는 이게 뭔가 잘못해서 그런건 줄 알았는데, 허탈하네요 ramrr44 2021.12.15 16:54

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)