標籤:pen pycha col 結果 建立項目 資料庫 close 這一 資料表
前期的配置工作在之前的一篇博文中有提到過,現在直接進行爬取
一.建立項目
scrapy startproject putu
二.建立spider檔案
1 scrapy genspider patubole patubole.com
三.利用chrome瀏覽器分析出樓價和標題的兩個欄位的xpath運算式,開始編寫patubole.py檔案。網路的爬取是通過這個檔案進行的
以下代碼是最終的代碼
所建的patubole.py檔案必須實現name,parse函數,start_url這三個屬性
1 # -*- coding: utf-8 -*- 2 import scrapy 3 from scrapy.http import Request 4 from urllib import parse 5 from patu.items import PatuItem 6 7 8 class PatuboleSpider(scrapy.Spider): 9 name = ‘patubole‘10 # allowed_domains = [‘python.jobbole.com‘]11 start_urls = [‘http://xa.ganji.com/fang1/‘]12 13 def parse(self, response):14 zufang_title=response.xpath(‘//*[@class="f-list-item ershoufang-list"]/dl/dd[1]/a/text()‘).extract()15 zufang_money=response.xpath(‘//*[@class="f-list-item-wrap f-clear"]/dd[5]/div[1]/span[1]/text()‘).extract()17 for i,j in zip(zufang_title,zufang_money):18 print(i,":",j)20
四.將爬取的資料儲存到資料庫sufang中。
(1)在pycharm中建立資料庫
完成後會出現
(2)將資料存放在建立的資料庫zufang的資料表sufang中
資料的爬取是有patubole.py實現的,資料的儲存是由pipelines.py實現的,pipelines.py又是有items.py提供資料的支援
所以編寫items.py
1 # -*- coding: utf-8 -*- 2 3 # Define here the models for your scraped items 4 # 5 # See documentation in: 6 # https://doc.scrapy.org/en/latest/topics/items.html 7 8 import scrapy 9 10 11 class PatuItem(scrapy.Item):12 # define the fields for your item here like:13 # name = scrapy.Field()14 zufang_title=scrapy.Field()15 zufang_money=scrapy.Field()16 pass
此時就要回過頭來修改剛開是為了測試編寫的patubole.py 檔案
代碼如下
1 # -*- coding: utf-8 -*- 2 import scrapy 3 from scrapy.http import Request 4 from urllib import parse 5 from patu.items import PatuItem 6 7 8 class PatuboleSpider(scrapy.Spider): 9 name = ‘patubole‘10 # allowed_domains = [‘python.jobbole.com‘]11 start_urls = [‘http://xa.ganji.com/fang1/‘]12 13 def parse(self, response):14 zufang_title=response.xpath(‘//*[@class="f-list-item ershoufang-list"]/dl/dd[1]/a/text()‘).extract()15 zufang_money=response.xpath(‘//*[@class="f-list-item-wrap f-clear"]/dd[5]/div[1]/span[1]/text()‘).extract()16 pipinstall=PatuItem() #建立PatuItem執行個體,實現資料的傳遞17 for i,j in zip(zufang_title,zufang_money):18 pipinstall[‘zufang_title‘]=i19 pipinstall[‘zufang_money‘]=j20 21 yield pipinstall #這一步很重要
22 23 24 # pass
(3)在settings.py中進行PatuPipeline檔案配置
1 ITEM_PIPELINES = {2 ‘patu.pipelines.PatuPipeline‘: 300,3 }
(5)pipelines.py檔案代碼,實現儲存資料到資料庫中
其中包含SQL的相關知識
1 # Define your item pipelines here 2 # 3 # Don‘t forget to add your pipeline to the ITEM_PIPELINES setting 4 # See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html 5 6 import sqlite3 7 class PatuPipeline(object): 8 def open_spider(self,spider): 9 self.con=sqlite3.connect(‘zufang sqlite‘)10 self.cn=self.con.cursor()11 12 13 def process_item(self, item, spider):14 # print(item.zufang_title,item.zufang_money)15 insert_sql=‘insert into sufang (title,money) values("{}","{}")‘.format(item[‘zufang_title‘],item[‘zufang_money‘])16 print(insert_sql)17 self.cn.execute(insert_sql)18 self.con.commit()19 return item20 21 def spider_close(self,spider):22 self.con.close()
最終結果
其中main.py檔案是為了調式方便而添加的,可以不用,直接用相關命令啟動爬蟲
python爬蟲爬取趕集網資料