抓取动态网页(使用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等浏览器。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线