美文网首页
python采集js

python采集js

作者: 白敏鸢 | 来源:发表于2017-09-29 03:55 被阅读0次

    今天玩玩pyton采集js,
    首先介绍一下js,javascript,客户端脚本语言,国内用的很多,这哥们有个兄弟,AngularJS,谷歌搞出来的,
    js简介:

    现在浏览器多如牛毛,不过根本上来说,就是格式化的现实一些数据和可以对这些数据进行操作,
    js就是可以操作网页上东西的一种语言。js中有个jquery,这兄弟里面很很多写好的js,
    我们可以直接调用,还有个ajax,听名字就知道,异步js和xml.
    这位仁兄是专门和我们后台交互数据的,但是又不会引起页面刷新。
    
    

    python采集v1

    python最让我觉得牛逼的地方之一就是库贼方便,这里我使用selenium这个库。最初这哥们是
    做网站自动测试的,现在用来和浏览器一起happy,造化弄人啊,不多说,先玩玩
    step1,先去找一个喜欢的浏览器吧,我这里使用phantomjs,
          去下载一个吧。选择自己的版本.
    step2,下载安装我们的selenium,
            pip install selenium
    step3,既然要用到js,那就得找个页面,为了方便我就使用本地以前使用过的页面吧。
          springboot跑起来,ok!
    step4,ok,准备工作完成,开始我们的python
    from selenium import webdriver
    import time
    
    driver = webdriver.PhantomJS(executable_path='xxx')
    driver.get("localhost/pages/test1.html")
    time.sleep(5)
    print(driver.find_element_by_id("content").text)
    driver.close()
    这里有几个坑,配置path要把phantomjs加上,diver.find是和页面元素绑定的,
    运行一下
        hello,test1.
    没问题。其他的方法类似,这里有selenium的中文文档
    https://www.gitbook.com/book/wizardforcel/selenium-doc/details
    
    

    python采集V2

    现在我们已经可以实现在单个页面找找ajax这哥们后面的东西,
    思考一个问题,ajax数据提交,我们可以找到,那么页面如果变化了呢?
    没错,就是我们的重定向啦
    重定向2中,一种页面重定向,一种服务器重定向。
    服务端重定向可以使用urllib来搞定,我们这里只考虑页面重定向,
    
    先想想怎么做呢?比较重来都不是一个简单的事情,所以要找到2个东西的区别,我这里是
    这样做的,记录2个对象转换过程发生的事情,
    for example
      1分钟之前的你a和一分钟之后的你b有什么变化?
      idea1:把a,b抽象出来,然后对每个属性记录,比较其中的不同,true,一样,false,不一样
      idea2,我们记录其中你的改变,不定义a与b,只是考虑a与b之间的做的事情c,c存在不一样,c不存在,一样
    ok,思路有了,开始写Python吧from selenium import webdriver
    import time
    from selenium.webdriver.remote.webelement import WebElement
    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 out after 10 seconds and returning")
                return
            time.sleep(.5)
            try:
                elem == driver.find_element_by_tag_name("html")
            except StaleElementReferenceException:
                return
    
    #REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS
    driver = webdriver.PhantomJS(executable_path='xxx')
    #driver = webdriver.Chrome(executable_path='xxx')
    driver.get("http://localhost/pages/test1.html")
    waitForLoad(driver)
    print(driver.page_source)
    
    这个py没半分钟检测一下,看看html标签在不在,limit为10妙,是不是和redis持久化类似呢?
    没错,我就是抄的redis的想法
    

    相关文章

      网友评论

          本文标题:python采集js

          本文链接:https://www.haomeiwen.com/subject/xdebextx.html