python select_one 질문드립니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
python select_one 질문드립니다.

QA

python select_one 질문드립니다.

본문

안녕하세요.

select_one으로 거의 모든정보를 가져왔는데

아래 적색부분 url 부분만 따로 가져올수 있는지 궁금합니다.

2021/0910/202109101125338484700.jpg

아래 소스로 해보았으나 에러가 나네요

image_url           = soup.select_one('img[style="width:100%"]')['src']

 

감사합니다.

 

<div class="container mt-2">
<div class="row list-item">

<div class="col-12 col-sm-7 col-md-7 mt-2">

<div class="card card-fluid">
    <script>
            document.write('<img src="'+img_domain+'2021/0910/202109101125338484700.jpg'+'" style="width:100%">');
      </script>

        <div class="naver" style="">

         </div>
  </div> </div>   </div>   </div>  

이 질문에 댓글 쓰기 :

답변 1

다음과 같이 해 볼 수 있지 않을까 합니다.

 

HTML 코드에서 이미지 URL을 선택하는 방법은 이미지 태그를 직접 선택하는 것이 아니라 JavaScript 코드에서 이미지 URL을 생성하는 부분을 선택해야 합니다.

 

예를 들면 다음과 같습니다.


from bs4 import BeautifulSoup
# HTML 코드를 제공합니다.
html_code = """
<div class="container mt-2">
<div class="row list-item">
<div class="col-12 col-sm-7 col-md-7 mt-2">
<div class="card card-fluid">
    <script>
            document.write('<img src="'+img_domain+'2021/0910/202109101125338484700.jpg'+'" style="width:100%">');
      </script>
        <div class="naver" style="">
         </div>
  </div>
</div>
</div>
</div>
"""
# BeautifulSoup을 사용하여 HTML을 파싱합니다.
soup = BeautifulSoup(html_code, 'html.parser')
# JavaScript 코드 부분을 선택합니다.
script = soup.find('script')
if script:
    # JavaScript 코드에서 이미지 URL을 추출합니다.
    js_code = script.string
    img_url = js_code.split('img_domain')[1].split('" style=')[0].strip("'+")
    print(img_url)
else:
    print("이미지 URL을 찾을 수 없습니다.")

 

JavaScript 부분을 선택하고, JavaScript 코드에서 이미지 URL을 추출하는 방식으로 이렇게 하면 이미지 URL을 가져 올 수 있을 것 같습니다.

안녕하세요.
소스 실행 시키니 잘되네요.
그런데 제 소스에서는 다른 script가 먼저 잡혀서 오류가 발생하네요
아래 script에서 card card-fluid 이면서 script
script              = soup.find('script')
=>
script              = soup.find('card card-fluid and script')
이런 형태로 안되네요?
감사합니다.

<div class="card card-fluid">
  <script>
      document.write('<img src="'+img_domain+'2021/0910/202109101125338484700.jpg'+'" style="width:100%">');
    </script>
</div>

다음 형태로 해보시는건 어떨까 합니다.


# BeautifulSoup을 사용하여 HTML을 파싱합니다.
soup = BeautifulSoup(html_code, 'html.parser')

# 더 명확한 선택자를 사용하여 script 태그를 선택합니다.
script = soup.select_one('div.card.card-fluid script')

if script:
    # JavaScript 코드에서 이미지 URL을 추출합니다.
    js_code = script.string
    img_url = js_code.split('img_domain')[1].split('" style=')[0].strip("'+")

    print(img_url)
else:
    print("이미지 URL을 찾을 수 없습니다.")

이렇게 하면 다른 script 태그로 인한 오류를 방지하면서 원하는 script 태그를 선택할 수 있지 않을까 합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 18
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT