第十章 采集javascript 使用selenium库进行获取

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# 等3秒获取指定的内容 会有selenium不支持无头的phantomjs的警告
# from selenium import webdriver
# import time
# driver=webdriver.PhantomJS(executable_path='D:/pycharm/phantomjs-2.1.1-windows/bin/phantomjs')
# driver.get("http://pythonscraping.com/pages/javascript/ajaxDemo.html")
# time.sleep(3)
# print(driver.find_element_by_id('content').text)
# driver.close()


# 用id检查页面是不是已经完全加载
# from selenium import webdriver
# from selenium.webdriver.common.by import By
# from selenium.webdriver.support import expected_conditions as EC
# from selenium.webdriver.support.ui import WebDriverWait
#
# driver=webdriver.PhantomJS(executable_path='D:/pycharm/phantomjs-2.1.1-windows/bin/phantomjs')
# driver.get("http://pythonscraping.com/pages/javascript/ajaxDemo.html")
# try:
#     element=WebDriverWait(driver,10).until(
#         EC.presence_of_element_located(By.ID,"loadedButton"))
# finally:
#     print(driver.find_element_by_id("content").text)
#     driver.close()

# 处理重定向 客户端重定向的处理 在页面开始加载时监控dom元素,重复调用这个元素
# 直到selenium抛出StaleElementReferenceException异常,说明网页发生了跳转

# 每半分钟检查一次网页,看是否html的标签还在不在,时限为10s
import time

from selenium import webdriver
from selenium.common.exceptions import StaleElementReferenceException


def waitForLoad(driver):
    elem=driver.find_element_by_tag_name("html")
    count=0
    while True:
        count+=1
        if count>20:
            print("timing put after 10 seconds and returns")
            return
        time.sleep(.5)
        try:
            elem==driver.find_element_by_tag_name("html")
        except StaleElementReferenceException:
            return
driver=webdriver.phantomjs(executable_path='D:/pycharm/phantomjs-2.1.1-windows/bin/phantomjs')
driver.get("http://pythonscraping.com/pages/javascript/redirectDemo1.html")
waitForLoad(driver)
print(driver.page_source)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值