Skip to main content

A Simple Distributed Web Crawle

Project description

simplified-scrapy

simplified scrapy, A Simple Web Crawle

Requirements

  • Python 2.7
  • Works on Linux, Windows, Mac OSX, BSD

运行

进入项目根目录,执行下面命令
python start.py

Demo

项目中有爬虫一个例子,在文件夹spiders下,文件名为demoSpider.py。自定义的爬虫类需要继承Spider类

from core.spider import Spider 
class DemoSpider(Spider):

需要给爬虫定义一个名字,配置入口链接地址,与抽取数据用到的模型名称。下面是采集新浪健康资讯数据的一个例子。其中auto_main_2表示抽取相同2级域名的链接,auto_obj表示自动抽取页面中的资讯数据,包括标题、正文和时间。

name = 'demo-spider'
start_urls = ['http://health.sina.com.cn/']
models = ['auto_main_2','auto_obj']

其中模型文件在文件夹models下,如果需要自定义模型,可以使用这个模型工具,下载地址。使用说明在这里 必须要重写的方法为saveObj,用于保存抽取出的数据
def saveObj(self, data):
自定义爬虫类时,有下面这些方法和属性可以重写

concurrencyPer1s=1
def beforeRequest(self, request):
def afterResponse(self, response, cookie, url):
def downloadError(self,url,err=None):
def saveObj(self, data):
#下面两个方法需要同时重写。如果重写了一个,另一个没有重写,可能会出错。
def popHtml(self):
def saveHtml(self,url,html):
#下面三个方法需要同时重写。如果重写了一个,其它的没有重写,可能会出错。
def popUrl(self):
def urlCount(self):
def saveUrl(self, urls):

Setting

自定义的爬虫需要在配置文件(setting.py)进行配置,配置后爬虫类才会生效。

SPIDERS=[
  {'file':'spiders.demoSpider','class':'DemoSpider'}
]

UrlStore、HtmlStore

可以重写UrlStore、HtmlStore中的方法,将url和html存储到redis、mongodb等数据库中。使用重写过的类,在爬虫类中实例化相应变量

class DemoSpider(Spider):
  url_store = RedisUrlStore()
  obj_store = MongoObjStore()
  html_store = SelfHtmlStore()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for simplified-scrapy, version 0.0.5
Filename, size File type Python version Upload date Hashes
Filename, size simplified_scrapy-0.0.5-py2-none-any.whl (24.5 kB) File type Wheel Python version py2 Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page