下载已经加载的网页的html

时间:2017-04-09 21:08:11

标签: python selenium beautifulsoup

我正在编写一个使用Python和selenium来自动登录网站的程序。该网站要求提供安全问题以进行额外验证。显然,我将使用“send_keys”发送的答案将取决于所提出的问题,因此我需要根据文本确定要求的内容。 BeautifulSoup可用于解析HTML,但在我看到的所有示例中,您必须提供一个URL,然后阅读页面内容。如何阅读已打开的页面内容?我正在使用的代码是:

from selenium import webdriver  
from selenium.webdriver.common.keys import Keys  
from bs4 import BeautifulSoup  
chromedriver = 'C:\\Program Files\\Google\\chromedriver.exe'  
browser = webdriver.Chrome(chromedriver)  
browser.get('http://www.aaaa.com')  
loginElem = browser.find_element_by_id('bbbb')  
loginElem.send_keys('cccc')  
passwordElem = browser.find_element_by_id('dddd')  
passwordElem.send_keys('eeee')  
passwordElem.send_keys(Keys.RETURN)  

在此之后加载带有安全问题的页面,这是我想要URL的页面。 我也试过按元素查找但由于某种原因它不工作,这就是我尝试解决方法的原因。下面是问题所在的整个div类的HTML。或者,也许你可以帮助我寻找合适的人。

<div class="answer-section"> 
<p> Please answer your challenge question so we can&nbsp;help
verify&nbsp;your identity.
</p> <label for="tlpvt-challenge-answer"> What is the name of your dog?
</label>
<input type="text" id="tlpvt-challenge-answer" class="tl-private gis- mask"
name="challengeQuestionAnswer" value=""/>
</div>

1 个答案:

答案 0 :(得分:0)

如果你想使用BeautifulSoup,你可以从webdriver中检索源代码,然后解析它:

chromedriver = 'C:\\Program Files\\Google\\chromedriver.exe'  
browser = webdriver.Chrome(chromedriver)
browser.get('http://www.aaaa.com')

# call page_source attr from a webdriver instance to
# retrieve HTML source code
html = browser.page_source

# parse it with BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
label = soup.find('label', {'for': 'tlpvt-challenge-answer'})
print label.get_text()

输出:

$ What is the name of your dog?