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

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在循环中使用if语句   Java onthefly字符串替换   安卓 java。util。拉链ZipInputStream在解压过程中部分为空   java检查安卓设备是否支持4K视频?   java如何显示ArrayList<Integer[]>lista=new ArrayList<>()   如何在Java8中将字符流转换为字符串   java序列化ArrayList<Objects>并返回,保留类   java通过复制到webapps手动部署Tomcat应用   java如何将JsonNode转换为映射   java从addOnSuccessListener获取结果   java在泛型类中生成随机数   列表中每个对象的java格式   最新GAE SDK版本(1.9.26)的java MemcacheService增量问题   RESTful服务的java url设计   java Maven可传递依赖公共集合版本3 vs 4   list Java:如何使用try/catch块和return   如何在Eclipse 202012中为Java 14启用预览功能?