




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于深度學(xué)習(xí)pm2.5預(yù)警分析系統(tǒng)_init_Spiders文件# ThispackagewillcontainthespidersofyourScrapyproject# Pleaserefertothedocumentationforinformationonhowtocreateandmanage# yourspiders.Items# -*-coding:utf-8-*-# Defineherethemodelsforyourscrapeditems# Seedocumentationin:# /en/latest/topics/items.ht
2、mlimportscrapyclassHistoryCityItem(scrapy.Item):city_name=scrapy.Field()city_url=scrapy.Field()classHistoryMonthItem(scrapy.Item):city_id=scrapy.Field()city_name=scrapy.Field()hm_year=scrapy.Field()hm_month=scrapy.Field()hm_aqi=scrapy.Field()hm_aqi_min=scrapy.Field()hm_aqi_max=scrapy.Field()hm_quali
3、ty=scrapy.Field()hm_pm25=scrapy.Field()hm_pm10=scrapy.Field()hm_so2=scrapy.Field()hm_co=scrapy.Field()hm_no2=scrapy.Field()hm_o3=scrapy.Field()hm_rank=scrapy.Field()hm_day_url=scrapy.Field()classHistoryDayItem(scrapy.Item):city_id=scrapy.Field()city_name=scrapy.Field()hd_date=scrapy.Field()hd_aqi=sc
4、rapy.Field()hd_aqi_min=scrapy.Field()hd_aqi_max=scrapy.Field()hd_quality=scrapy.Field()hd_pm25=scrapy.Field()hd_pm10=scrapy.Field()hd_so2=scrapy.Field()hd_co=scrapy.Field()hd_no2=scrapy.Field()hd_o3=scrapy.Field()hd_rank=scrapy.Field()classWeatherCityItem(scrapy.Item):city_name=scrapy.Field()city_ur
5、l=scrapy.Field()classWeatherDayItem(scrapy.Item):weather_date=scrapy.Field()city_id=scrapy.Field()city_name=scrapy.Field()weather_am=scrapy.Field()weather_pm=scrapy.Field()weather_top=scrapy.Field()weather_down=scrapy.Field()weather_am_wind_type=scrapy.Field()weather_am_wind_level=scrapy.Field()weat
6、her_pm_wind_type=scrapy.Field()weather_pm_wind_level=scrapy.Field()middlewares#-*-coding:utf-8-*-# Defineherethemodelsforyourspidermiddleware# Seedocumentationin:# /en/latest/topics/spider-middleware.htmlfromscrapyimportsignalsimportchardetclassSpiderSpiderMiddleware(object):# No
7、tallmethodsneedtobedefined.Ifamethodisnotdefined,# scrapyactsasifthespidermiddlewaredoesnotmodifythe# passedobjects.classmethoddeffrom_crawler(cls,crawler):# ThismethodisusedbyScrapytocreateyourspiders.s=cls()crawler.signals.connect(s.spider_opened,signal=signals.spider_opened)returnsdefprocess_spid
8、er_input(response,spider):# Calledforeachresponsethatgoesthroughthespider# middlewareandintothespider.# ShouldreturnNoneorraiseanexception.returnNonedefprocess_spider_output(response,result,spider):# CalledwiththeresultsreturnedfromtheSpider,after# ithasprocessedtheresponse.# MustreturnaniterableofR
9、equest,dictorItemobjects.foriinresult:yieldidefprocess_spider_exception(response,exception,spider):# Calledwhenaspiderorprocess_spider_input()method# (fromotherspidermiddleware)raisesanexception.# ShouldreturneitherNoneoraniterableofResponse,dict#orItemobjects.passdefprocess_start_requests(start_req
10、uests,spider):# Calledwiththestartrequestsofthespider,andworks# similarlytotheprocess_spider_output()method,except# thatitdoesn'thavearesponseassociated.# Mustreturnonlyrequests(notitems).forrinstart_requests:yieldrdefspider_opened(self,spider):('Spideropened:%s'%spider
11、.name)classSpiderTianQiHouBaoMiddleware(object):defprocess_response(self,request,response,spider):# encoding=chardet.detect(response.body)# ifencoding'encoding'='GB2312':# printresponse.headers._dict_.keys()#Content-Typeresponse.headers'content-type'='text/html;charset=gb
12、2312'returnresponsemodelfromsqlalchemyimportColumn,Date,DateTime,Integer,String,Text,Float,textfromsqlalchemy.ext.declarativeimportdeclarative_basedefto_dict(self)::getattr(self,,None)forcinself._table_.columnsBase=declarative_base()metadata=Base.metadataBase.to_dict=to_dictcla
13、ssHistoryCity(Base):_tablename_='history_city'city_id=Column(Integer,primary_key=True)city_name=Column(String(30),server_default=text("'':charactervarying")city_url=Column(String(1024),server_default=text("'':charactervarying")classHistoryMonth(Base):_tabl
14、ename_='history_month'hm_id=Column(Integer,primary_key=True)city_id=Column(Integer)city_name=Column(String(30),server_default=text("'':charactervarying")hm_year=Column(Integer)hm_month=Column(Integer)hm_aqi=Column(Integer)hm_aqi_min=Column(Integer)hm_aqi_max=Column(Integer)
15、hm_quality=Column(String(30),server_default=text("'':charactervarying")hm_pm25=Column(Float)hm_pm10=Column(Float)hm_so2=Column(Float)hm_co=Column(Float)hm_no2=Column(Float)hm_o3=Column(Float)hm_rank=Column(Integer)hm_day_url=Column(String(255),server_default=text("'':c
16、haractervarying")classHistoryDay(Base):_tablename_='history_day'hd_id=Column(Integer,primary_key=True)city_id=Column(Integer)city_name=Column(String(30),server_default=text("'':charactervarying")hd_date=Column(Date)hd_aqi=Column(Integer)hd_aqi_min=Column(Integer)hd_aqi
17、_max=Column(Integer)hd_quality=Column(String(30),server_default=text("'':charactervarying")hd_pm25=Column(Float)hd_pm10=Column(Float)hd_so2=Column(Float)hd_co=Column(Float)hd_no2=Column(Float)hd_o3=Column(Float)hd_rank=Column(Integer)classWeatherCity(Base):_tablename_='weather_
18、city'city_id=Column(Integer,primary_key=True)city_name=Column(String(30),server_default=text("'':charactervarying")city_url=Column(String(1024),server_default=text("'':charactervarying")classWeatherDay(Base):_tablename_='weather_day'weather_id=Column(I
19、nteger,primary_key=True)weather_date=Column(Date)city_id=Column(Integer)city_name=Column(String(30),server_default=text("'':charactervarying")weather_am=Column(String(30),server_default=text("'':charactervarying")weather_pm=Column(String(30),server_default=text(&q
20、uot;'':charactervarying")weather_top=Column(Integer)weather_down=Column(Integer)weather_am_wind_typevarying")weather_am_wind_levelvarying")weather_pm_wind_typevarying")weather_pm_wind_levelColumn(String(30),=Column(String(30),=Column(String(30),=Column(String(30),server_d
21、efault=text("'':characterserver_default=text("'':characterserver_default=text("'':characterserver_default=text("'':charactervarying")pipelines# -*-coding:utf-8-*-# Defineyouritempipelineshere# Don'tforgettoaddyourpipelinetotheITEM_PIPELINE
22、Ssetting# See:/en/latest/topics/item-pipeline.htmlimportjsonfromscrapy.exceptionsimportDropItemfromsqlalchemyimportcreate_enginefromsqlalchemy.ormimportsessionmakerfromitemsimportHistoryCityItem,HistoryMonthItem,HistoryDayItemfrommodelimportHistoryCity,HistoryDay,HistoryMonthfrom
23、itemsimportWeatherCityItem,WeatherDayItemfrommodelimportWeatherCity,WeatherDayclassHistoryPipeline(object):def_init_(self,sqlalchemy_database_uri,sqlalchemy_pool_size):self.engine=create_engine(sqlalchemy_database_uri,pool_size=sqlalchemy_pool_size)self.db_session=sessionmaker(autocommit=False,autof
24、lush=False,bind=self.engine)classmethoddeffrom_crawler(cls,crawler):returncls(sqlalchemy_database_uri=crawler.settings.get('SQLALCHEMY_DATABASE_URI_MYSQL'),sqlalchemy_pool_size=crawler.settings.get('SQLALCHEMY_POOL_SIZE',8),)defopen_spider(self,spider):self.session=self.db_session()d
25、efprocess_item(self,item,spider):try:ifisinstance(item,HistoryCityItem):#數(shù)據(jù)入庫(kù)service_item=HistoryCity(*item)row_sql="selectcount(*)cntfromhistory_citywherecity_name=:city_name"row_data="city_name":service_item.city_namerow=self.session.execute(row_sql,row_data).fetchone()ifnotrow
26、'cnt':self.session.add(service_item)mit()elifisinstance(item,HistoryMonthItem):service_item=HistoryMonth(*item)row_sql="select*fromhistory_citywherecity_name=:city_namerow_data="city_name":service_item.city_namerow=self.session.execute(row_sql,row_data).fetchone()if'city_i
27、d'inrow:service_item.city_id=row'city_id'#printu"HistoryMonthItem:%s"json.dumps(dict(service_item),indent=4,ensure_ascii=False)row_sql="selectcount(*)cntfromhistory_month""wherecity_name=:city_nameand=:hm_yearandhm_month=:hm_month"row_data="city_name&qu
28、ot;:service_item.city_name,"hm_year":service_item.hm_year,"hm_month":service_item.hm_monthrow=self.session.execute(row_sql,row_data).fetchone()ifnotrow'cnt':self.session.add(service_item)mit()elifisinstance(item,HistoryDayItem):service_item=HistoryDay(*item)row_sql="
29、select*fromhistory_citywhere=:city_name"row_data="city_name":service_item.city_namerow=self.session.execute(row_sql,row_data).fetchone()if'city_id'inrow:service_item.city_id=row'city_id'#printu"HistoryMonthItem:%s"json.dumps(dict(service_item),indent=4,ensure
30、_ascii=False)row_sql="selectcount(*)cntfromhistory_day""wherecity_name=:city_nameand=:hd_date"row_data="city_name":service_item.city_name,"hd_date":service_item.hd_date,row=self.session.execute(row_sql,row_data).fetchone()ifnotrow'cnt':self.session.add
31、(service_item)mit()exceptExceptionase:self.session.rollback()hm_yearcity_namehd_dateraiseereturnitemdefclose_spider(self,spider):self.session.close()classWeatherPipeline(object):def_init_(self,sqlalchemy_database_uri,sqlalchemy_pool_size):self.engine=create_engine(sqlalchemy_database_uri,pool_size=s
32、qlalchemy_pool_size)self.db_session=sessionmaker(autocommit=False,autoflush=False,bind=self.engine)classmethoddeffrom_crawler(cls,crawler):returncls(sqlalchemy_database_uri=crawler.settings.get('SQLALCHEMY_DATABASE_URI_MYSQL'),sqlalchemy_pool_size=crawler.settings.get('SQLALCHEMY_POOL_SIZE',8),)defopen_spider(self,spider):self.session=self.db_session()defprocess_item(self,item,spider):try:ifisinstance(item,WeatherCityItem):#數(shù)據(jù)入庫(kù)service_item=WeatherCi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度購(gòu)房意向金托管合同
- 醫(yī)用橡膠引流管行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 酒店安全免責(zé)協(xié)議(2025年度)員工培訓(xùn)與責(zé)任承擔(dān)
- 風(fēng)排瓦斯安全發(fā)電企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 鋁礬土綜合利用工程企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 2025年度社保局與農(nóng)民工工傷保險(xiǎn)合作協(xié)議
- 中學(xué)課本企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 中藥調(diào)理女性生理周期行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 二零二五年度燃?xì)馄髽I(yè)安全生產(chǎn)責(zé)任保險(xiǎn)合同
- 2025年度跨境電商代發(fā)貨代理合同
- 城市軌道交通乘客服務(wù)課件(完整版)
- 圍手術(shù)期肺部感染
- 北師大版語(yǔ)文選修《蕭蕭》ppt課件1
- 大學(xué)生職業(yè)素養(yǎng)課件-5第五單元學(xué)會(huì)有效溝通-PPT課件
- 煤礦2021年重大安全風(fēng)險(xiǎn)分析預(yù)判防控報(bào)告全文
- 《傷逝》_魯迅課件__大學(xué)語(yǔ)文(基礎(chǔ)教育)
- 《談骨氣》課文閱讀(共2頁(yè))
- 高考成績(jī)證明模板
- 蝴蝶蘭PPT課件
- 賓館做房記錄表
- 工業(yè)管道檢查報(bào)告
評(píng)論
0/150
提交評(píng)論