一个小的实用程序集,用于简化编写碎片蜘蛛。

scrapy-boilerplate的Python项目详细描述


废弃的样板文件是一个小的实用程序集,可以简化Scrapy 编写低复杂度的蜘蛛,这在小型和一次性项目中非常常见。

它需要Scrapy(>;=0.16),并已使用Python2.7进行了测试。 另外,运行examples中的脚本需要PyQuery 目录。

注意

该代码是实验性的,包括一些隐藏的魔法,可能是 很难调试。如果您是Scrapy新手,请不要使用此代码,除非 您已经准备好调试以前没有人看到的错误。

使用指南

项目

标准项目定义:

fromscrapy.itemimportItem,FieldclassBaseItem(Item):url=Field()crawled=Field()classUserItem(BaseItem):name=Field()about=Field()location=Field()classStoryItem(BaseItem):title=Field()body=Field()user=Field()

变成:

fromscrapy_boilerplateimportNewItemBaseItem=NewItem('url crawled')UserItem=NewItem('name about location',base_cls=BaseItem)StoryItem=NewItem('title body user',base_cls=BaseItem)

基底蜘蛛

标准蜘蛛定义:

fromscrapy.spiderimportBaseSpiderclassMySpider(BaseSpider):name='my_spider'start_urls=['http://example.com/latest']defparse(self,response):# do stuff

变成:

fromscrapy_boilerplateimportNewSpiderMySpider=NewSpider('my_spider')@MySpider.scrape('http://example.com/latest')defparse(spider,response):# do stuff

爬行蜘蛛

标准爬网蜘蛛定义:

fromscrapy.contrib.spidersimportCrawlSpider,Rulefromscrapy.contrib.linkextractors.sgmlimportSgmlLinkExtractorclassMySpider(CrawlSpider):name='my_spider'start_urls=['http://example.com']rules=(Rule(SgmlLinkExtractor('category\.php'),follow=True),Rule(SgmlLinkExtractor('item\.php'),callback='parse_item'),)defparse_item(self,response):# do stuff

变成:

fromscrapy_boilerplateimportNewCrawlSpiderMySpider=NewCrawlSpider('my_spider')MySpider.follow('category\.php')@MySpider.rule('item\.php')defparse_item(spider,response):# do stuff

跑步助手

单蜘蛛运行脚本:

# file: my-spider.py# imports omitted ...classMySpider(BaseSpider):# spider code ...if__name__=='__main__':fromscrapy_boilerplateimportrun_spidercustom_settings={# ...}spider=MySpider()run_spider(spider,custom_settings)

带有标准爬网命令行选项的多蜘蛛脚本:

# file: my-crawler.py# imports omitted ...classMySpider(BaseSpider):name='my_spider'# spider code ...classOtherSpider(CrawlSpider):name='other_spider'# spider code ...if__name__=='__main__':fromscrapy_boilerplateimportrun_crawler,SpiderManagercustom_settings={# ...}SpiderManager.register(MySpider)SpiderManager.register(OtherSpider)run_crawler(custom_settings)

注意

有关工作代码示例,请参见examples目录。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java动态地将圆添加到Arraylist   什么是好的“错误检查”模式(Java)?   java是我们可以在应用程序中使用的云服务,它需要存储最大大小为5MB的小文件   JavaGooglePhotosAPI是静态内容上传项目的永久url   java AES密钥存储   java文件正在下载,但没有任何内容   每次循环迭代和threadsleep的java日志记录都是不好的做法?   java不会切换到另一个。单击submit时使用jsp。春季mvc   java我很难从我的maclaurin系列中获得sin x的准确输出   java使用类似的<Object>?   需要java Hibernate映射吗?   java如何在https和客户端证书请求后面生成web服务代理   java如何通过注释有条件地使用自定义JsonSerializer   java如何在html页面和Restful WebResource方法之间实现JaxB?   读取文件Libgdx Android时发生java错误   java如何在处理主活动之前从另一个方法中获取值?   java在一个SQLquery中使用多个语句,还是使用批处理?