테스트 사이트 - 개발 중인 베타 버전입니다

python select_one 질문드립니다. 채택완료

망고프리 2년 전 조회 2,033

안녕하세요.

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개

채택된 답변
+20 포인트

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

 

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

 

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

</p>

<p>from bs4 import BeautifulSoup</p>

<p># 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>

"""</p>

<p># BeautifulSoup을 사용하여 HTML을 파싱합니다.

soup = BeautifulSoup(html_code, 'html.parser')</p>

<p># JavaScript 코드 부분을 선택합니다.

script = soup.find('script')</p>

<p>if script:

    # JavaScript 코드에서 이미지 URL을 추출합니다.

    js_code = script.string

    img_url = js_code.split('img_domain')[1].split('" style=')[0].strip("'+")</p>

<p>    print(img_url)

else:

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

 

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

망고프리
2년 전
안녕하세요.
소스 실행 시키니 잘되네요.
그런데 제 소스에서는 다른 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>
웹메이킹
2년 전
다음 형태로 해보시는건 어떨까 합니다.

[code]
# 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을 찾을 수 없습니다.")
[/code]
이렇게 하면 다른 script 태그로 인한 오류를 방지하면서 원하는 script 태그를 선택할 수 있지 않을까 합니다.
망고프리
2년 전
정말 감사합니다.
잘 되네요

댓글을 작성하려면 로그인이 필요합니다.

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

로그인