python抓取动态网页(一个基于webkit内核的无头浏览器浏览器)
优采云 发布时间: 2021-10-28 13:04python抓取动态网页(一个基于webkit内核的无头浏览器浏览器)
查看元素后发现,在百度图片中,显示图片的div为:pullimages
这个div里面的内容是动态加载的。但是使用urllib&urllib2无法捕获。
要抓取动态加载的元素,首先考虑使用 selenium 调用浏览器进行抓取。
我们运行的环境是Linux,理想的方式是无接口爬取,所以使用selenium+phantomjs无接口爬取。
什么是phantomjs?它是一个基于webkit核心的无头浏览器,也就是没有UI界面,也就是浏览器。
selenium和phantomjs的安装和配置可以google一下,这里就不多说了。
代码如下:
from selenium import webdriver
driver = webdriver.PhantomJS(executable_path='/bin/phantomjs/bin/phantomjs')
#如果不方便配置环境变量。就使用phantomjs的绝对路径也可以
driver.get('http://image.baidu.com/i?ie=utf-8&word=%E5%91%A8%E6%9D%B0%E4%BC%A6')
#抓取了百度图片,query:周杰伦
driver.page_source
#这就是返回的页面内容了,与urllib2.urlopen().read()的效果是类似的,但比urllib2强在能抓取到动态渲染后的内容。
driver.quit()
这里。动态页面获取成功。