网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
09月24日
漏签
0
天
网络技术吧
关注:
342,609
贴子:
730,109
看贴
图片
吧主推荐
视频
游戏
9
回复贴,共
1
页
<<返回网络技术吧
>0< 加载中...
pyspider 爬虫教程(三):使用 PhantomJS 渲
只看楼主
收藏
回复
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
英文原文:
http://docs.pyspider.org/en/latest/tutorial/Render-with-PhantomJS/
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
在上两篇教程中,我们学习了怎么从 HTML 中提取信息,也学习了怎么处理一些请求复杂的页面。但是有一些页面,它实在太复杂了,无论是分析 API 请求的地址,还是渲染时进行了加密,让直接抓取请求非常麻烦。这时候就是 PhantomJS 大显身手的时候了。
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
在使用 PhantomJS 之前,你需要安装它(安装文档)。当你安装了之后,在运行 all 模式的 pyspider 时就会自动启用了。当然,你也可以在 demo.pyspider.org 上尝试。
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
使用 PhantomJS
当 pyspider 连上 PhantomJS 代理后,你就能通过在 self.crawl 中添加 fetch_type='js' 的参数,开启使用 PhantomJS 抓取。例如,在教程二中,我们尝试抓取的
http://movie.douban.com/explore
就可以通过 PhantomJS 直接抓取:
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我在这里使用了一些 PyQuery 的 API,你可以在 PyQuery complete API 获得完整的 API 手册。
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
在页面上执行自定义脚本
你会发现,在上面我们使用 PhantomJS 抓取的豆瓣热门电影只有 20 条。当你点击『加载更多』时,能获得更多的热门电影。为了获得更多的电影,我们可以使用 self.crawl 的 js_script 参数,在页面上执行一段脚本,点击加载更多:
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这个脚本默认在页面加载结束后执行,你可以通过 js_run_at 参数 修改这个行为
由于是 AJAX 异步加载的,在页面加载完成时,第一页的电影可能还没有加载完,所以我们用 setTimeout 延迟 1 秒执行。
你可以间隔一定时间,多次点击,这样可以加载更多页。
由于相同 URL (实际是相同 taskid) 的任务会被去重,所以这里为 URL 加了一个 #more
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
上面两个例子,都可以在
http://demo.pyspider.org/debug/tutorial_douban_explore
中找到。
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示