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

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源码内容为短期目的,进阶使用再下一步学习吧。

    原文作者:JustMe23
    原文地址: https://www.jianshu.com/p/e4ebbd8539c6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞