python抓取动态网页( urllib使用js动态加载的网页--百度图片的结果页)
优采云 发布时间: 2022-04-06 06:14python抓取动态网页(
urllib使用js动态加载的网页--百度图片的结果页)
我们在做网页抓取的时候,一般使用 urllib 和 urllib2 来满足我们大部分的需求。
但有时我们会遇到使用js动态加载的网页。你会发现 urllib 只能抓取部分空白的网页。就像下面百度图片的结果页:
查看元素后发现百度图片中,显示图片的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('%E5%91%A8%E6%9D%B0%E4%BC%A6')
#抓取百度图片,查询:周杰伦
driver.page_source
#这是返回页面的内容,类似于urllib2.urlopen().read(),但比urllib2强,可以捕获动态渲染的内容。
driver.quit()
去这里。成功抓取动态页面。