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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。