动态网页抓取(使用urllib+phantomjs是什么呢?使用js动态加载的网页)
优采云 发布时间: 2022-03-09 17:00动态网页抓取(使用urllib+phantomjs是什么呢?使用js动态加载的网页)
我们在进行网页抓取时,一般使用 urllib 和 urllib2 来满足我们的大部分需求。
但是有时我们会遇到使用js动态加载的网页。你会发现 urllib 只能抓取部分空白的网页。就像下面百度图片的结果页面:
审查元素后, . 发现在百度图片中,显示图片的div是:pullimages
此 div 内的内容是动态加载的。但是使用 urllib&urllib2 不能爬取。
要抓取动态加载的元素,首先考虑使用 selenium 调用浏览器进行抓取。
而我们的运行环境是linux,最理想的方式是无界面抓取。
所以使用 selenium+phantomjs 进行无界面抓取
什么是phantomjs?它是基于webkit内核的无头浏览器,即没有UI界面,即是浏览器
selenium和phantomjs的安装和配置可以google,这里就不多说了。
代码显示如下:
from selenium import webdriver
def fetchBdImage(query):
#如果不方便配置环境变量。填入phantomjs的绝对路径也可以
driver =webdriver.PhantomJS(executable_path='/bin/phantomjs/bin/phantomjs')
#抓取百度图片页面,query由参数决定
url = 'http://image.baidu.com/i?ie=utf-8&word='+query;
driver.get(url)
#这就是获取页面内容了,与urllib2.urlopen().read()的效果是类似的。
html = driver.page_source
#抓取结束,记得释放资源
driver.quit()
#返回抓取到的页面内容
return html
到这里。抓取成功。
【备注】:linux下使用phantomJS,windows下可以使用chrome、firefox等浏览器