抓取动态网页(使用urllib+phantomjs是什么呢?使用js动态加载的网页)
优采云 发布时间: 2021-09-13 02:02抓取动态网页(使用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等浏览器。