파이썬에서 java script

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
파이썬에서 java script

QA

파이썬에서 java script

본문

안녕하세요?

파이썬을 공부 하고 있는 초보 입니다

selenium 으로 web driver 구동후 (Ex :https://www.naver.com) 화면상의 Link 에 Mouse Over 하면 

JavaScrip 는  $(this).text() 를 사용하여 Link의 Text를 가져올수 있는데요

 

Selenium에서 위와 같이  Link 의 Text를 가져올수 있는 방법이 있는지요?

 

이 질문에 댓글 쓰기 :

답변 5

안녕하세요?

 

제가 올려주신 질문의 취지를 잘못 이해했네요 ㅠㅠ

 

Selenium에서 jQuery를 실행하고 결과값을 반환받는 방법에 대한 질문이신거죠?

 


from selenium import webdriver
import time
 
driver = webdriver.Firefox()
driver.get('https://sir.kr')
with open('jquery-3.5.1.min.js', errors='ignore') as f: # jQuery를 로딩합니다.
    driver.execute_script(f.read())
time.sleep(5) # 브라우저 로딩시간을 대기합니다.
result = driver.execute_script("return $('title').text()")
time.sleep(1)
print(result)

 

대략 위와 같은 방법으로 jQuery를 띄우고, 스크립트를 실행한 후에, 값을 반환받을 수 있어요!

 

위 스크립트는 'SIR'을 반환해요 :)

 

그런데 Selenium에서 jQuery를 실행하다보면 일반적인 브라우저와 달리

 

이런저런 이유로 다양한 오류가 발생하는 경우가 있으니 참고하세요~ ㅠㅠ

 

그럼 좋은 주말 되시고, 일교차가 큰데 감기 조심하세요!

 

+)

반드시 driver.get()으로 접근한 후에 jQuery를 로딩해야 되고,

페이지가 바뀌면 다시 불러와야 되는 번거로운 점이 있어요 ㅠㅠ

됩니다.  파이썬 셀레늄 문법은 모르겠지만 c# 으로는 By.CssSelecotr() 가 jquery의 $ 역할을 합니다.

구해와서 object.GetAttribute("href") 이런식으로 구해오면 됩니다.

파이썬에서는 아마도 메소드이름이 스네이크케이스로 되어 있을거예요

안녕하세요?? ^-^

 

질문하신 취지가 Selenium에서 a태그의 텍스트를 가져오는 것을 의미하시는지요??

 

그런 용도로는 BeautifulSoup 모듈을 이용하시면 간단해요! 

 

대략 다음과 같은 방식으로 사용하시면 되어요 :)

 


from bs4 import BeautifulSoup
 
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
a_tag_text = soup.find('a', {'class' : 클래스를 입력하세요}).text

 

.get_text()와 .text는 거의 유사하지만,

 

전자에는 좀 더 다양한 옵션을 사용할 수 있어요 ^^

 

그럼 즐겁고 뜻깊은 한가위 되세요!

 

 

+)

반드시 BeautifulSoup을 사용하지 않더라도,

Selenium 자체에서 지원하는 .find_elements_by_xpath() 등을 활용하여 엘레먼트에 접근한 후에 

.text 메서드를 사용할 수 있어요!

 

++)

제 개인적인 경험으로는 기본 라이브러리인 html.parser보다는 

html5lib이 보다 안정적으로 구동되더군요!

 

<div class='month'>

<a href='#'>1월</a><a href='#'>2월</a><a href='#'>3월</a>
</div>

 

link = driver.find_element_by_css_selector(".month").find_elements_by_tag_name('a') <--지정한 class내의 링크만

#link = driver.find_elements_by_tag_name('div a') <---div 내의 링크만

for i in range(len(link)):
  print(link[i].text)

 

=======페이지내의 모든 링크

link2 = driver.find_elements_by_tag_name('a')
for i in range(len(link2)):
  print(link2[i].text)

 

제 질문이 조금 잘못 되었네요~~

Java script : 마우스 오버한 Link 의 Span Tag 텍스트 가져오기 (ID,Class 모름)

  <script>

     $("span").hover(function() {var c = $(this).text();  alert(c);})

  </script>

 

이걸 Python 에서 

from selenium import webdriver

import requests

 

driver.get("https://www.naver.com") 으로 열린 네이버 에서 사용할수 있는 방법이 없을런지요

 

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

회원로그인

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