抓取动态网页(urllib使用urllib和urllib2的安装配置详解(图))
优采云 发布时间: 2022-03-01 21:06抓取动态网页(urllib使用urllib和urllib2的安装配置详解(图))
本期文章将与大家分享python如何获取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('http://image.baidu.com/i?ie=utf-8&word=%E5%91%A8%E6%9D%B0%E4%BC%A6')
#抓取了百度图片,query:周杰伦
driver.page_source
#这就是返回的页面内容了,与urllib2.urlopen().read()的效果是类似的,但比urllib2强在能抓取到动态渲染后的内容。
driver.quit()
到这里。成功爬取动态页面。
谢谢阅读!这里分享python获取js动态加载数据的方法。希望以上内容可以对大家有所帮助,让大家学习到更多的知识。如果你觉得文章不错,可以分享给更多人看到!