美文网首页Python大讲堂
[Python爬虫] 等待网页加载后再获取内容

[Python爬虫] 等待网页加载后再获取内容

作者: QuantumCC | 来源:发表于2018-12-08 22:22 被阅读1次

    0x0 背景

    最近在学习Python爬虫的相关知识,主要是之前有一个小idea想要用Python实现,沉寂了一年,近期终于下定决心要利用假期时间首要解决此项任务,不然拖到最后都没完成,自己遗憾不说,还会养成拖沓的坏习惯,只有想法不去实现,终究不能提高。
    于是乎,利用假期的时间,竟然十分顺利的完成了初期设想的大部分功能,而且运行良好。正当我准备使用时,发现有个功能需要爬取的网页发生了变化,以前使用requests.get()可以得到的内容,由于需要打开网页后加载,现在抓不到了!这个问题困扰了我差不多两天的时间,终于通过查阅资料解决,记录一下。

    0x1 Selenium+PhantomJS

    虽然PhantomJS因为某些内部原因暂停更新,但是相比其他的浏览器解决方案要实例化窗口,这个应该还是要高效一点吧,而且不更新不代表不能用,等以后有需求了再看别的,目前就选该解决路径了。

    安装环境(此处为MacOS环境)

    安装PhantomJS

    1. 官网下载 选择相应平台版本下载
    2. 设置环境变量
    nano ~/.bash_profile
    ##将Phantomjs路径加入path中
    export PATH=/Your/Path/to/Phantomjs/bin:$PATH
    ##保存退出
    ##生效
    source ~/.bash_profile
    
    1. 测试
     ~ phantomjs
     phantomjs>
    

    安装selenium

    直接用pip安装即可
    pip3 install selenium --user

    0x2 使用

    剩下的就挺简单了,直接上代码:

    from selenium import webdriver
    driver = webdriver.PhantomJS()
    driver.get(your_url)
    html = driver.execute_script('return document.documentElement.outerHTML')
    

    虽然selenium有很多更高级的用法,但是由于笔者之前用的是cssselect,所以就得到完整加载的HTML源码内容为短期目的,进阶使用再下一步学习吧。

    相关文章

      网友评论

        本文标题:[Python爬虫] 等待网页加载后再获取内容

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