Python Scrapy框架第一个入门程序示例
本文实例讲述了pythonScrapy框架第一个入门程序。分享给大家供大家参考,具体如下:
首先创建项目:
scrappystartprojectmaitian
第二步:明确要抓取的字段items.py
importscrapy classMaitianItem(scrapy.Item): #definethefieldsforyouritemherelike: #name=scrapy.Field() title=scrapy.Field() price=scrapy.Field() area=scrapy.Field() district=scrapy.Field()
第三步:在spider目录下创建爬虫文件:zufang_spider.py
2.1创建一个类,并继承scrapy的一个子类:scrapy.Spider
2.2自定义爬取名,name=""后面运行框架需要用到;
2.3定义爬取目标网址
2.4定义scrapy的方法
下面是简单项目:
importscrapy frommaitian.itemsimportMaitianItem classMaitianSpider(scrapy.Spider): name="zufang" start_urls=['http://bj.maitian.cn/zfall/PG1'] defparse(self,response): forzufang_itmeinresponse.xpath('//div[@class="list_title"]'): yield{ 'title':zufang_itme.xpath('./h1/a/text()').extract_first().strip(), 'price':zufang_itme.xpath('./div[@class="the_price"]/ol/strong/span/text()').extract_first().strip(), 'area':zufang_itme.xpath('./p/span/text()').extract_first().replace('㎡','').strip(), 'district':zufang_itme.xpath('./p//text()').re(r'昌平|朝阳|东城|大兴|丰台|海淀|石景山|顺义|通州|西城')[0], } next_page_url=response.xpath( '//div[@id="paging"]/a[@class="down_page"]/@href').extract_first() ifnext_page_urlisnotNone: yieldscrapy.Request(response.urljoin(next_page_url))
第四步:在settings.py文件中设置数据保存到数据库
. . . ITEM_PIPELINES={'maitian.pipelines.MaitianPipeline':300,} MONGODB_HOST='127.0.0.1' MONGODB_PORT=27017 MONGODB_DBNAME='maitian' MONGODB_DOCNAME='zufang'
第五步:通过管道pipelines.py连接上面的操作
importpymongo fromscrapy.confimportsettings classMaitianPipeline(object): def__init__(self): host=settings['MONGODB_HOST'] port=settings['MONGODB_PORT'] db_name=settings['MONGODB_DBNAME'] client=pymongo.MongoClient(host=host,port=port) db=client[db_name] self.post=db[settings['MONGODB_DOCNAME']] defprocess_item(self,item,spider): zufang=dict(item) self.post.insert(zufang) returnitem
其中middlewares.py文件暂不处理
以上简单的scrapy爬虫项目搭建完毕了
更多相关内容可查看本站专题:《PythonSocket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家基于Scrapy框架的Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。