固然以前写过 若何抓取WEB页面 和 若何大年夜 WEB 页面中提守信息。然则感到照样须要一篇 step by step 的教程,不然没有一个总体的熟悉。不过,没想到这个教程居然会变成一篇译文,在这个爬虫教程系列文┞仿中,会以实际的例子,由浅入深评论辩论爬取(抓取和解析)的一些关键问题。
在 教程一 中,我们将要爬取的网站是豆瓣片子:http://movie.douban.com/
- def list_page(self, response):
- for each in response.doc('HTML>BODY>DIV#wrapper>DIV#content>DIV.grid-16-8.clearfix>DIV.article>DIV>TABLE TR.item>TD>DIV.pl2>A').items():
- self.crawl(each.attr.href, callback=self.detail_page)
- # 翻页
- for each in response.doc('HTML>BODY>DIV#wrapper>DIV#content>DIV.grid-16-8.clearfix>DIV.article>DIV.paginator>A').items():
- self.crawl(each.attr.href, callback=self.list_page)
- 翻页是一个到本身的 callback 回调
你可以在: http://demo.pyspider.org/debug/tutorial_douban_movie 获得完全的代码,和进行测试。
开端之前
因为教程是基于 pyspider 的,你可以安装一个 pyspider(Quickstart,也可以直接应用 pyspider 的 demo 情况: http://demo.pyspider.org/。
你还应当至少对万维网是什么竽暌剐一个简单的熟悉:
- 万维网是一个由很多互相链接的超文本页面(以下简称网页)构成的体系。
- 网页应用网址(URL)定位,并链接彼此
- 网页应用 HTTP 协定传输
- 网页应用 HTML 描述外不雅和语义
所以,爬网页实际上就是:
- 找到包含我们须要的信息的网址(URL)列表
- 经由过程 HTTP 协定把页面下载回来
- 大年夜页面的 HTML 中解析出须要的信息
- 找到更多这个的 URL,回到 2 持续
拔取一个开端网址
既然我们要爬所有的片子,起首我们须要抓一个片子列表,一个好的列表应当:
- 包含足够多的片子的 URL
- 经由过程翻页,可以遍历到所有的片子
- 一个按照更新时光排序的列表,可以更快抓到最新更新的片子
我们在 http://movie.douban.com/ 扫了一遍,发明并没有一个列表能包含所有片子,只能退而求其次,经由过程抓取分类下的所有的标签列表页,来遍历所有的片子: http://movie.douban.com/tag/
创建一个项目
在 pyspider 的 dashboard 的右下角,点击 “Create” 按钮
开端抓取
- 应用 run 单步调试你的代码,对于用一个 callback 最好应用多个页面类型进行测试。然后保存。
- 回到 Dashboard,找到你的项目
- 将 status 修改为 DEBUG 或 RUNNING
- 按 run 按钮
调换>
- self.crawl 告诉 pyspider 抓取指定页面,然后应用 callback 函数对结不雅进行解析。
- @every 润饰器,表示>
Tag 列表页
在 tag 列表页 中,我们须要提掏出所有的 片子列表页 的 URL。你可能已经发清楚明了,sample handler 已经提取了异常多大年夜的 URL,所有,一种可行的提取列表页 URL 的办法就是用正则大年夜中过滤出来:
- import re
- ...
- @config(age=10 * 24 * 60 * 60)
推荐阅读
Windows 10 S怎么样?Windows 10 S六大新特性介绍
可能很多同伙会问Windows10 S体系怎么样?Windows10 S体系是5月2日微软推出的Windows10简化版体系,重要针对教导市场、学生用户,拥有开机快、价格便宜、兼容性更好,硬件请求更低等特点。>>>详细阅读
地址:http://www.17bianji.com/lsqh/35127.html
1/2 1