pyspider数据抓取
由于教程是基于 pyspider 的,你可以安装一个 pyspider(http://demo.pyspider.org/)。
网络数据抓取实际就是去爬网页,而爬网页实际上就是:
- 找到包含我们需要的信息的网址(URL)列表;
- 通过 HTTP 协议把页面下载回来;
- 从页面的 HTML 中解析出需要的信息;
- 找到更多这个的 URL,回到 2 继续。
在数据抓取的过程中,我们需要对万维网有一些简单的认识,万维网使用http协议传输,采用html描述外观和语义,使用网址(URL)定位,并链接彼此等。这样我们更容易对抓取到的数据进行解析。
from libs.base_handler import *
class Handler(BaseHandler):
crawl_config = {
}
@every(minutes=24 * 60)
def on_start(self):
self.crawl('http://scrapy.org/', callback=self.index_page)
@config(age=10 * 24 * 60 * 60)
def index_page(self, response):
for each in response.doc('a[href^="http"]').items():
self.crawl(each.attr.href, callback=self.detail_page)
@config(priority=2)
def detail_page(self, response):
return {
"url": response.url,
"title": response.doc('title').text(),
}
以上代码是创建任务后默认生成的一个脚本示例。
通过 _onstart 回调函数,作为爬取的入口点,当点击主面板上的 run 的时候,就是调用这个函数,启动抓取。 self.crawl 告诉调度器,默认抓取 'http://scrapy.org/' 这个页面,然后使用 _callback=self.indexpage 这个回调函数进行数据解析。所有 return 的内容默认会被捕获到 resultdb 中。