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