Maison > Questions et réponses > le corps du texte
我在做一个python爬虫,使用了selenium库和phantomjs浏览器。我在一个网页中触发了一个click事件打开了一个新的网页,然后我用browser.page_source得到的却是原来那个网页非新打开网页的源码,请问我该如何取得新打开页面的源码呢?
黄舟2017-04-18 10:23:55
Si le lien ouvre un nouvel onglet, votre pilote utilisera toujours la fenêtre actuelle par défaut,
Alternativement, vous pouvez passer un « handle de fenêtre » à la méthode « switch_to_window() » Sachant cela, il est possible de parcourir chaque fenêtre ouverte comme ceci :
for handle in driver.window_handles:
driver.switch_to_window(handle)
Par exemple, si votre navigateur a plusieurs onglets, alors window_handles enregistre les objets d'instance correspondant à ces onglets, donc si vous n'avez qu'une seule page Web ouverte actuellement, alors la page nouvellement ouverte est window_handles [1]
Après le changement sur cette page, récupérez le code source.
天蓬老师2017-04-18 10:23:55
Si elle est ouverte dans la fenêtre actuelle, il est possible que la nouvelle page n'ait pas encore été chargée et que l'URL et les données de la nouvelle page ne puissent pas être obtenues d'ici là. Vous pouvez utiliser attendre ici et définir certaines conditions pour. assurez-vous que la nouvelle page est chargée avant de continuer, le code est le suivant :
from selenium.webdriver.support.ui import WebDriverWait
# 等待新页面生成
WebDriverWait(self.browser, 5).until(
expected_conditions.presence_of_element_located((By.ID, "username")
)