网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
03月29日
漏签
0
天
网络技术吧
关注:
342,713
贴子:
731,927
看贴
图片
吧主推荐
视频
游戏
1
2
下一页
尾页
30
回复贴,共
2
页
,跳到
页
确定
<<返回网络技术吧
>0< 加载中...
pyspider 爬虫教程(二):AJAX 和 HTTP
只看楼主
收藏
回复
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
在上一篇教程中,我们使用 self.crawl API 抓取豆瓣电影的 HTML 内容,并使用 CSS 选择器解析了一些内容。不过,现在的网站通过使用 AJAX 等技术,在你与服务器交互的同时,不用重新加载整个页面。但是,这些交互手段,让抓取变得稍微难了一些:你会发现,这些网页在抓回来后,和浏览器中的并不相同。你需要的信息并不在返回 HTML 代码中。
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
在这一篇教程中,我们会讨论这些技术 和 抓取他们的方法。(英文版:AJAX-and-more-HTTP)
向光路径科技
2024全新的计算机
网络技术
专业个人简历下载,Hr最喜欢的计算机
网络技术
专业个人简历下载,600万大学生选择的计算机
网络技术
专业个人简历免费使用。海量的计算机
网络技术
专业个人简历供你选择,更有秋招大礼包等你免费拿!
2025-03-29 00:12
广告
立即查看
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
AJAX
AJAX 是 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)的缩写。AJAX 通过使用原有的 web 标准组件,实现了在不重新加载整个页面的情况下,与服务器进行数据交互。例如在新浪微博中,你可以展开一条微博的评论,而不需要重新加载,或者打开一个新的页面。但是这些内容并不是一开始就在页面中的(这样页面就太大了),而是在你点击的时候被加载进来的。这就导致了你抓取这个页面的时候,并不能获得这些评论信息(因为你没有『展开』)。
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
AJAX 的一种常见用法是使用 AJAX 加载 JSON 数据,然后在浏览器端渲染。如果能直接抓取到 JSON 数据,会比 HTML 更容易解析。
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
当一个网站使用了 AJAX 的时候,除了用 pyspider 抓取到的页面和浏览器看到的不同以外。你在浏览器中打开这样的页面,或者点击『展开』的时候,常常会看到『加载中』或者类似的图标/动画。例如,当你尝试抓取:
http://movie.douban.com/explore
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你会发现电影是『载入中...』
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
找到真实的请求
由于 AJAX 实际上也是通过 HTTP 传输数据的,所以我们可以通过 Chrome Developer Tools 找到真实的请求,直接发起真实请求的抓取就可以获得数据了。
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
打开一个新窗口
按 Ctrl+Shift+I (在 Mac 上请按 Cmd+Opt+I) 打开开发者工具。
切换到网络( Netwotk 面板)
在窗口中打开
http://movie.douban.com/explore
万旋名表商城
对比过就知道,这家大厂名表真的靠谱,强力推荐!1比1完美复制正品,一手货源,质优价廉!
2025-03-29 00:12
广告
立即查看
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
在页面加载的过程中,你会在面板中看到所有的资源请求。
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
AJAX 一般是通过 XMLHttpRequest 对象接口发送请求的,XMLHttpRequest 一般被缩写为 XHR。点击网络面板上漏斗形的过滤按钮,过滤出 XHR 请求。挨个查看每个请求,通过访问路径和预览,找到包含信息的请求:
http://movie.douban.com/j/searchX61Xsubjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
在豆瓣这个例子中,XHR 请求并不多,可以挨个查看来确认。但在 XHR 请求较多的时候,可能需要结合触发动作的时间,请求的路径等信息帮助在大量的请求中找到包含信息的关键请求。这需要抓取或者前端的相关经验。所以,有一个我一直在提的观点,学习抓取的最好方法是:学会写网站。
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
现在可以在新窗口中打开
http://movie.douban.com/j/searchX67Xsubjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0
,你会看到包含电影数据的 JSON 原始数据。推荐安装 JSONView(Firfox版)插件,这样可以看到更好看的 JSON 格式,展开折叠列等功能。然后,我们根据 JSON 数据,编写一个提取电影名和评分的脚本:
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你可以在
http://demo.pyspider.org/debug/tutorial_douban_explore
获得完整的代码,并进行调试。脚本中还有一个使用 PhantomJS 渲染的提取版本,将会在下一篇教程中介绍。
溪流泉峰网络科技
终于找到一家真正的大厂手表,卖家与专柜卖的手表一样。卖家与专柜卖的手表一样,支持货到付款,全国包邮。
2025-03-29 00:12
广告
立即查看
colinLXP
中校
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
HTTP
HTTP 是用来传输网页内容的协议。在前面的教程中,我们已经通过 self.crawl 接口提交了 URL 进行了抓取。这些抓取就是通过 HTTP 协议传输的。
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示