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을 생성하는 부분을 선택해야 합니다.
예를 들면 다음과 같습니다.
</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개
[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 태그를 선택할 수 있지 않을까 합니다.
잘 되네요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
소스 실행 시키니 잘되네요.
그런데 제 소스에서는 다른 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>