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 답변
-
어떤 형식으로 반환되는지 확인해보세요.
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라는 함수도 있어요 한번 찾아보셔요
- 태그 일 때에는 사용방법이 다른 것 같습니다. 태그 안의 클래스로 구분 지어야 할 거 같은데 이 부분에서 방법을 찾을 수 가 없네요. ramrr44 2021.12.15 10:06
-
코드는 다음과 같습니다.
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>
-
저도 수정 해 주신 내용으로 시도를 했었는데, 링크주소는 정상적으로 출력이 되나, 이미지와 같이 태그문도 중복으로 같이 출력이 되더라구요.
그래서 저 중복된 내용도 안 나오게 하려고 한 번 더 태그 안에서 뭔가를 더 해주어야 하는게 아닐까 싶어서 질문을 올렸어요.
저도 왜 태그가 링크 주소위에 중복되서 나오는지 모르겠습니다.
댓글 입력