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

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为什么数组中的空格(“”)有错误?   java我需要一个正则表达式,它只接受一个字符串(只有字母和数字),在开头和结尾允许有空格,但不能在两者之间?   更改列表视图适配器后禁用java Fast scoll   java JTable在使用DefaultTableModel插入后未刷新   java这是在JavaFX中切换场景的正确方法吗?   java如何在GWT中清除根面板?   java如何正确使用加载数组和保存数组方法?   使用JavaMail API在电子邮件中单击链接   交互式Java程序   JavaSpring、Morphia和DataAccessException实现   JAVA试图用randoop生成单元测试的lang.IllegalStateException   Android上的javanio性能   java为列表添加值初始化列表大小   swing Java图形不在底部和右侧绘制   java如何调用scanDouble()方法?   java Android截击无连接错误   java正则表达式和AwkFilenameFilter   Asm api版本定义中的java按位OR运算符