1

나는 웹 스크래핑을 배우려고 노력하고있다 (나는 초보자이다). 일부 웹 사이트 (예 : Quora)에서 버튼을 클릭하면 새 요소가 화면에 표시됩니다. 새 요소의 페이지 소스를 가져올 수 없습니다. 나는 새로운 팝업의 페이지 소스를 얻고 모든 요소를 ​​얻을 수 있기를 원한다. 내 문제를 이해하려면 Quora 계정이 있어야합니다.Python Webscraping Selenium and BeautifulSoup (모달 윈도우 콘텐트)

from selenium import webdriver 
from bs4 import BeautifulSoup 
from unidecode import unidecode 
import time 

sleep = 10 
USER_NAME = 'Insert Account name' #Insert Account name here 
PASS_WORD = 'Insert Account Password' #Insert Account Password here 
url = 'Insert url' 
url2 = ['insert url'] 
#Logging in to your account 
driver = webdriver.Chrome('INSERT PATH TO CHROME DRIVER') 
driver.get(url) 
page_source=driver.page_source 
if 'Continue With Email' in page_source: 
    try: 
     username = driver.find_element(By.XPATH, '//input[@placeholder="Email"]') 
     password = driver.find_element(By.XPATH, '//input[@placeholder="Password"]') 
     login= driver.find_element(By.XPATH, '//input[@value="Login"]') 
     username.send_keys(USER_NAME) 
     password.send_keys(PASS_WORD) 
     time.sleep(sleep) 
     login.click() 
     time.sleep(sleep) 
    except: 
     print ('Did not work :(.. Try again') 
else: 
    print ('Did not work :(.. Try different page') 


다음 부분 ("시도")는 관련 웹 페이지로 이동됩니다에 대한 정보를 수집 :

난 당신이 BeautifulSoup로, 셀레늄 및 chromedriver를 사용하여 사용할 수있는 코드의 일부가 특정 질문의 추종자. 내가 추종자 요소의 페이지 소스를 얻을 때

for url1 in url2:   
    driver.get(url1) 
    source = driver.page_source 
    soup1 = BeautifulSoup(source,"lxml") 
    Follower_button = soup1.find('a',{'class':'FollowerListModalLink QuestionFollowerListModalLink'}) 
    Follower_button2 = unidecode(Follower_button.text) 
    driver.find_element_by_link_text(Follower_button2).click() 

####Does not gives me correct page source in the next line#### 
    source2=driver.page_source 
    soup2=BeautifulSoup(source2,"lxml") 

    follower_list = soup2.findAll('div',{'class':'FollowerListModal QuestionFollowerListModal Modal'}) 
    if len(follower_list)>0: 
     print 'It worked :)' 
    else: 
     print 'Did not work :(' 

는 그러나, 나는 메인 페이지가 아닌 추종자 요소의 페이지 소스를 그만 둘. 누구든지 날 팝업 팔로워 요소의 페이지 소스를 얻을 수 있습니까 ?? 나는 여기서 무엇을 얻지 못 하느냐.

참고 : 다시 또는 내 문제를 보는 또 다른 방법은 (있는 경우) 당신 Quora의 계정에 로그인 한 후 추종자 질문에 이동하는 것입니다 . 화면 오른쪽 하단의 팔로어 버튼을 클릭하면 팝업이 표시됩니다. 본질적으로이 팝업의 요소를 얻는 것이 나의 문제이다.


업데이트 - 좋아 그래서 난 좀 읽고하고 윈도우가 모달 창처럼 보인다. 누구든지 모달 윈도우의 내용을 가져 오는 것을 도와 줄 수 있습니까?

+0

창 핸들로 전환 해보십시오. 아마도? 사실 소스가 이미 존재하기 때문에 요소가 보이지 않기 때문에 불가능합니다. – ProFan

+0

나는 이미 그것을 시도했다. 하나의 핸들 만있는 것 같습니다. 따라서 전환이 불가능합니다. :( – Prometheus

답변

0

문제가 해결되었습니다. 내가해야 할 일은 한 줄을 추가하는 것입니다. 클릭을 생성 한 후

time.sleep(sleep_time) 

을 추가해야합니다. 문제는 처음에는 대기 시간이 없었기 때문에 페이지 소스가 업데이트되지 않았기 때문입니다. 그러나 time.sleep이 충분히 길면 (웹 사이트마다 다를 수 있음) 페이지 소스가 최종적으로 업데이트되어 필요한 요소를 얻을 수있었습니다. :) 수업은 배웠습니다. 인내가 웹 스크 레이 핑의 열쇠입니다. 하루 종일 이걸 알아 내려고 했어.