Python Webscraping Selenium和BeautifulSoup(模式窗口内容)
我正在努力学习网络垃圾(我完全是个新手)。我注意到在一些网站上(比如Quora),当我点击一个按钮,屏幕上就会出现一个新元素。我似乎无法获取新元素的页面源代码。我希望能够获得新弹出窗口的页面源代码,并获得所有元素。请注意,您需要有一个Quora帐户才能理解我的问题。Python Webscraping Selenium和BeautifulSoup(模式窗口内容),python,selenium,beautifulsoup,modal-dialog,selenium-chromedriver,Python,Selenium,Beautifulsoup,Modal Dialog,Selenium Chromedriver,我正在努力学习网络垃圾(我完全是个新手)。我注意到在一些网站上(比如Quora),当我点击一个按钮,屏幕上就会出现一个新元素。我似乎无法获取新元素的页面源代码。我希望能够获得新弹出窗口的页面源代码,并获得所有元素。请注意,您需要有一个Quora帐户才能理解我的问题。 我有一部分代码,您可以使用beautifulsoup、selenium和chromedriver使用: from selenium import webdriver from bs4 import BeautifulSoup f
我有一部分代码,您可以使用beautifulsoup、selenium和chromedriver使用:
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')
下一部分将转到相关网页,并(“尝试”)收集特定问题关注者的信息
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 :('
然而,当我试图获取followers元素的页面源时,我最终得到的是主页的页面源,而不是follower元素。有人能帮我找到弹出的follower元素的页面来源吗??我没有得到什么
注意:
重新创建或查看我的问题的另一种方法是登录到你的Quora帐户(如果你有),然后与关注者讨论任何问题。如果单击屏幕右下角的followers按钮,将弹出一个窗口。我的问题本质上是获取这个弹出窗口的元素
更新-
好的,我已经读了一些,它似乎是一个模态窗口。有人帮我获取模态窗口的内容吗 问题已解决。我所要做的就是添加一行:
time.sleep(sleep_time)
生成单击后。问题是因为最初没有等待时间,页面源没有得到更新。然而,随着time.sleep足够长(可能因网站而异),页面源最终得到更新,我能够获得所需的元素。:)吸取的教训。耐心是抓取网页的关键。花了一整天的时间试图解决这个问题。尝试切换到窗口手柄。大概事实上,这是不可能的,因为源已经存在,只是元素不可见。我已经尝试过了。似乎只有一个把手。因此,不可能进行切换(