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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线