您好,登錄后才能下訂單哦!
本文實(shí)例講述了python Scrapy框架第一個入門程序。分享給大家供大家參考,具體如下:
首先創(chuàng)建項(xiàng)目:
scrappy start project maitian
第二步: 明確要抓取的字段items.py
import scrapy class MaitianItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() title = scrapy.Field() price = scrapy.Field() area = scrapy.Field() district = scrapy.Field()
第三步: 在spider目錄下創(chuàng)建爬蟲文件: zufang_spider.py
2.1 創(chuàng)建一個類,并繼承scrapy的一個子類: scrapy.Spider
2.2 自定義爬取名, name="" 后面運(yùn)行框架需要用到;
2.3 定義爬取目標(biāo)網(wǎng)址
2.4 定義scrapy的方法
下面是簡單項(xiàng)目:
import scrapy from maitian.items import MaitianItem class MaitianSpider(scrapy.Spider): name = "zufang" start_urls = ['http://bj.maitian.cn/zfall/PG1'] def parse(self, response): for zufang_itme in response.xpath('//div[@class="list_title"]'): yield { 'title': zufang_itme.xpath('./h2/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() if next_page_url is not None: yield scrapy.Request(response.urljoin(next_page_url))
第四步: 在settings.py文件中設(shè)置數(shù)據(jù)保存到數(shù)據(jù)庫
. . . ITEM_PIPELINES = {'maitian.pipelines.MaitianPipeline': 300,} MONGODB_HOST = '127.0.0.1' MONGODB_PORT = 27017 MONGODB_DBNAME = 'maitian' MONGODB_DOCNAME = 'zufang'
第五步: 通過管道pipelines.py 連接上面的操作
import pymongo from scrapy.conf import settings class MaitianPipeline(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']] def process_item(self, item, spider): zufang = dict(item) self.post.insert(zufang) return item
其中 middlewares.py 文件暫不處理
以上簡單的scrapy爬蟲項(xiàng)目搭建完畢了
更多相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python正則表達(dá)式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家基于Scrapy框架的Python程序設(shè)計(jì)有所幫助。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。