码迷,mamicode.com
首页 > Web开发 > 详细

使用Ghost.py爬取由JS动态生成的网页

时间:2015-07-11 06:41:46      阅读:3595      评论:0      收藏:0      [点我收藏+]

标签:

很多网站的内容是由JS动态生成的,对于这样的网站查看它的源代码是看不出什么的,常规的爬虫对于这样的网站束手无策。我自己做了一个由JS生成的图片,并成功的用Ghost.py把它爬取了下来。

技术分享

对于这么个图片看似平常,那么看下它的源代码

技术分享

从源代码里看不出关于这张图片的地址,而图片的地址是在后端,由JS加载进去的,爬取这类网站需要模拟浏览器执行JS语句,得到执行JS后的页面,再实现爬取。

技术分享

这里需要用到一个工具:ghost.py

ghost.py是一个使用python编写的封装了webkit的网络工具。官网是:http://jeanphix.me/Ghost.py

首先需要安装PyQt或者PySide,然后使用`pip`安装ghost.py:pip install ghost.py

获取网页内容已经相应的css、js、图片等资源:

from ghost import Ghost
ghost = Ghost()
page, resources = ghost.open(‘http://my.web.page‘)

该方法以元组的形式返回网页的主要资源(网页内容)和该网页需要加载的资源(比如CSS、js、图片等文件)。这些资源都被存储到HttpResource对象中。如果 print ghost.content 则会把JS执行后的页面给打印出来,从里面可以获取到图片的地址,从而实现爬取。

到了这里就可以实现爬取了

from ghost import Ghost
from bs4 import BeautifulSoup
import urllib2
 
 
url = ‘http://www.pyworm.com/jsimg/‘
ghost = Ghost(wait_timeout=120)
page, resources = ghost.open(url)
soup = BeautifulSoup(ghost.content)
img = soup.find_all([‘img‘])
imgurl = img[0].get(‘src‘)
print imgurl
data = urllib2.urlopen(imgurl).read()
with open(‘D:/Python/picture‘+‘/‘+‘jqxx.jpg‘,‘wb‘)as code:
            code.write(data)

我只是用最简单的例子把爬取动态页面的思路搞清,具体的实际情况肯定比这复杂得多,ghost.py的功能也有很多,以后继续探索发现吧。

使用Ghost.py爬取由JS动态生成的网页

标签:

原文地址:http://www.cnblogs.com/pylab/p/4637846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!