파이썬에서 java script

파이썬에서 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") 으로 열린 네이버 에서 사용할수 있는 방법이 없을런지요

 

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

회원로그인

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