日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python - scrapy pipeline報錯求助

瀏覽:185日期:2022-08-09 08:55:51

問題描述

由于不太清楚傳輸的機制,卡在SCRAPY傳輸的這個問題上近半個月,翻閱了好多資料,還是不懂,基礎比較差所以上來求助各位老師!不涉及自定義就以SCRAPY默認的格式為例spider return的東西需要什么樣的格式?dict?{a:1,b:2,.....}還是[{a:1,aa:11},{b:2,bb:22},{......}]return的東西傳去哪了?是不是下面代碼的item?

class pipeline : def process_item(self, item, spider):

我真的是很菜,但是我很想學希望能得到各位老師的幫助!下面是我的代碼,希望能指出缺點

spider:

# -*- coding: utf-8 -*-import scrapyfrom pm25.items import Pm25Itemimport reclass InfospSpider(scrapy.Spider): name = 'infosp' allowed_domains = ['pm25.com'] start_urls = [’http://www.pm25.com/rank/1day.html’, ] def parse(self, response):item = Pm25Item()re_time = re.compile('d+-d+-d+')date = response.xpath('/html/body/p[4]/p/p/p[2]/span').extract()[0] #單獨解析出DATE# items = []selector = response.selector.xpath('/html/body/p[5]/p/p[3]/ul[2]/li') #從response里確立解析范圍for subselector in selector: #通過范圍逐條解析 try: #防止[0]報錯rank = subselector.xpath('span[1]/text()').extract()[0] quality = subselector.xpath('span/em/text()')[0].extract()city = subselector.xpath('a/text()').extract()[0]province = subselector.xpath('span[3]/text()').extract()[0]aqi = subselector.xpath('span[4]/text()').extract()[0]pm25 = subselector.xpath('span[5]/text()').extract()[0] except IndexError:print(rank,quality,city,province,aqi,pm25) item[’date’] = re_time.findall(date)[0] item[’rank’] = rank item[’quality’] = quality item[’province’] = city item[’city’] = province item[’aqi’] = aqi item[’pm25’] = pm25 # items.append(item) yield item #這里不懂該怎么用,出來的是什么格式, #有的教程會return items,所以希望能得到指點

pipeline:

import timeclass Pm25Pipeline(object): def process_item(self, item, spider):today = time.strftime('%y%m%d',time.localtime())fname = str(today) + '.txt'with open(fname,'a') as f: for tmp in item: #不知道這里是否寫的對, #個人理解是spider return出來的item是yiled dict #[{a:1,aa:11},{b:2,bb:22},{......}]f.write(tmp['date'] + ’t’ +tmp['rank'] + ’t’ +tmp['quality'] + ’t’ +tmp['province'] + ’t’ +tmp['city'] + ’t’ +tmp['aqi'] + ’t’ +tmp['pm25'] + ’n’) f.close()return item

items:

import scrapyclass Pm25Item(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() date = scrapy.Field() rank = scrapy.Field() quality = scrapy.Field() province = scrapy.Field() city = scrapy.Field() aqi = scrapy.Field() pm25 = scrapy.Field() pass

部分運行報錯代碼:

Traceback (most recent call last): File 'd:python35libsite-packagestwistedinternetdefer.py', line 653, in _runCallbacks current.result = callback(current.result, *args, **kw) File 'D:pypropm25pm25pipelines.py', line 23, in process_item tmp['pm25'] + ’n’TypeError: string indices must be integers2017-04-03 10:23:14 [scrapy.core.scraper] ERROR: Error processing {’aqi’: ’30’, ’city’: ’新疆’, ’date’: ’2017-04-02’, ’pm25’: ’13 ’, ’province’: ’伊犁哈薩克州’, ’quality’: ’優’, ’rank’: ’357’}Traceback (most recent call last): File 'd:python35libsite-packagestwistedinternetdefer.py', line 653, in _runCallbacks current.result = callback(current.result, *args, **kw) File 'D:pypropm25pm25pipelines.py', line 23, in process_item tmp['pm25'] + ’n’TypeError: string indices must be integers2017-04-03 10:23:14 [scrapy.core.scraper] ERROR: Error processing {’aqi’: ’28’, ’city’: ’西藏’, ’date’: ’2017-04-02’, ’pm25’: ’11 ’, ’province’: ’林芝’, ’quality’: ’優’, ’rank’: ’358’}Traceback (most recent call last): File 'd:python35libsite-packagestwistedinternetdefer.py', line 653, in _runCallbacks current.result = callback(current.result, *args, **kw) File 'D:pypropm25pm25pipelines.py', line 23, in process_item tmp['pm25'] + ’n’TypeError: string indices must be integers2017-04-03 10:23:14 [scrapy.core.scraper] ERROR: Error processing {’aqi’: ’28’, ’city’: ’云南’, ’date’: ’2017-04-02’, ’pm25’: ’11 ’, ’province’: ’麗江’, ’quality’: ’優’, ’rank’: ’359’}Traceback (most recent call last): File 'd:python35libsite-packagestwistedinternetdefer.py', line 653, in _runCallbacks current.result = callback(current.result, *args, **kw) File 'D:pypropm25pm25pipelines.py', line 23, in process_item tmp['pm25'] + ’n’TypeError: string indices must be integers2017-04-03 10:23:14 [scrapy.core.scraper] ERROR: Error processing {’aqi’: ’27’, ’city’: ’云南’, ’date’: ’2017-04-02’, ’pm25’: ’15 ’, ’province’: ’玉溪’, ’quality’: ’優’, ’rank’: ’360’}Traceback (most recent call last): File 'd:python35libsite-packagestwistedinternetdefer.py', line 653, in _runCallbacks current.result = callback(current.result, *args, **kw) File 'D:pypropm25pm25pipelines.py', line 23, in process_item tmp['pm25'] + ’n’TypeError: string indices must be integers2017-04-03 10:23:14 [scrapy.core.scraper] ERROR: Error processing {’aqi’: ’26’, ’city’: ’云南’, ’date’: ’2017-04-02’, ’pm25’: ’10 ’, ’province’: ’楚雄州’, ’quality’: ’優’, ’rank’: ’361’}Traceback (most recent call last): File 'd:python35libsite-packagestwistedinternetdefer.py', line 653, in _runCallbacks current.result = callback(current.result, *args, **kw) File 'D:pypropm25pm25pipelines.py', line 23, in process_item tmp['pm25'] + ’n’TypeError: string indices must be integers2017-04-03 10:23:14 [scrapy.core.scraper] ERROR: Error processing {’aqi’: ’24’, ’city’: ’云南’, ’date’: ’2017-04-02’, ’pm25’: ’11 ’, ’province’: ’迪慶州’, ’quality’: ’優’, ’rank’: ’362’}Traceback (most recent call last): File 'd:python35libsite-packagestwistedinternetdefer.py', line 653, in _runCallbacks current.result = callback(current.result, *args, **kw) File 'D:pypropm25pm25pipelines.py', line 23, in process_item tmp['pm25'] + ’n’TypeError: string indices must be integers2017-04-03 10:23:14 [scrapy.core.scraper] ERROR: Error processing {’aqi’: ’22’, ’city’: ’云南’, ’date’: ’2017-04-02’, ’pm25’: ’9 ’, ’province’: ’怒江州’, ’quality’: ’優’, ’rank’: ’363’}Traceback (most recent call last): File 'd:python35libsite-packagestwistedinternetdefer.py', line 653, in _runCallbacks current.result = callback(current.result, *args, **kw) File 'D:pypropm25pm25pipelines.py', line 23, in process_item tmp['pm25'] + ’n’TypeError: string indices must be integers2017-04-03 10:23:14 [scrapy.core.engine] INFO: Closing spider (finished)2017-04-03 10:23:14 [scrapy.statscollectors] INFO: Dumping Scrapy stats:{’downloader/request_bytes’: 328, ’downloader/request_count’: 1, ’downloader/request_method_count/GET’: 1, ’downloader/response_bytes’: 38229, ’downloader/response_count’: 1, ’downloader/response_status_count/200’: 1, ’finish_reason’: ’finished’, ’finish_time’: datetime.datetime(2017, 4, 3, 2, 23, 14, 972356), ’log_count/DEBUG’: 2, ’log_count/ERROR’: 363, ’log_count/INFO’: 7, ’response_received_count’: 1, ’scheduler/dequeued’: 1, ’scheduler/dequeued/memory’: 1, ’scheduler/enqueued’: 1, ’scheduler/enqueued/memory’: 1, ’start_time’: datetime.datetime(2017, 4, 3, 2, 23, 13, 226730)}2017-04-03 10:23:14 [scrapy.core.engine] INFO: Spider closed (finished)

希望能到到各位老師的幫助再次感謝~!

問題解答

回答1:

直接寫入就行,不用做循環,item是單個處理,并不是你想的那樣的列表:

import timeclass Pm25Pipeline(object): def process_item(self, item, spider):today = time.strftime('%y%m%d', time.localtime())fname = str(today) + '.txt'with open(fname, 'a') as f: f.write(item['date'] + ’t’ + item['rank'] + ’t’ + item['quality'] + ’t’ + item['province'] + ’t’ + item['city'] + ’t’ + item['aqi'] + ’t’ + item['pm25'] + ’n’ )f.close()return item回答2:

搜索:TypeError: string indices must be integers,搞清楚什么問題定位行數,解決問題

回答3:

Scrapy的Item類似python字典,擴展了一些功能而已。

Scrapy的設計,每生成一個Item,即可傳遞到pipeline中處理。你在里面寫的for tmp in item循環的是item字典的鍵了,鍵應是字符串,再用__getitem__語法就會提示你使用的不是數字。

回答4:

你可以把一個item看作一個字典,實際它就是dict類的派生類。你在pipeline里對這個item直接遍歷,取到的tmp實際是都是字典的鍵,類型是字符串,所以tmp[’pm25’]這種操作報出TypeError:string類型的對象索引必須是int型。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲一区二区免费看| 欧美日韩国产一区精品一区| 日韩和欧美一区二区| 日韩一区二区免费看| 三级亚洲高清视频| 亚洲精品美女91| 国产精品mv在线观看| 高清久久一区| 亚洲天堂1区| 亚洲在线网站| 欧美一级二级三级视频| 精品一二三区| 久久人人99| 一区二区三区国产在线| 国产精品久久久久9999高清| 福利一区和二区| 99视频精品免费观看| 国产视频一区二区在线播放| 国产高清精品二区| 99久久99视频只有精品| 日韩精品一级中文字幕精品视频免费观看 | 欧美天堂亚洲电影院在线观看| 久久午夜影视| 精品中文在线| 蜜臀91精品国产高清在线观看| 综合亚洲色图| 精品久久中文| 一区二区亚洲精品| 久久福利在线| 亚洲欧美日本国产专区一区| 欧美激情99| 国产精品毛片| 粉嫩av一区二区三区四区五区| 日韩视频中文| 久久精品人人| 日韩午夜免费| 久久精品天堂| 蜜桃av一区二区| 91一区二区| 天堂俺去俺来也www久久婷婷| av日韩中文| 天堂久久av| 天堂资源在线亚洲| 国产欧美三级| 巨乳诱惑日韩免费av| 久久电影tv| 欧美午夜网站| 9久re热视频在线精品| 精品久久久中文字幕| 视频一区视频二区在线观看| 麻豆精品新av中文字幕| 蜜臀91精品一区二区三区| 亚洲va中文在线播放免费| 国产日产精品_国产精品毛片 | 青草av.久久免费一区| 精品一区三区| 桃色av一区二区| 欧美日韩午夜| 丝袜亚洲另类欧美| 午夜精品成人av| 狂野欧美性猛交xxxx| 亚洲区国产区| 亚洲精品97| 日韩精品第一区| 欧美交a欧美精品喷水| 亚洲午夜国产成人| 999久久久国产精品| sm久久捆绑调教精品一区| 久久国产免费看| 日韩精品五月天| 最近国产精品视频| 久久av一区二区三区| 成人久久一区| 免费高潮视频95在线观看网站| 欧美黄色精品| 国产日本亚洲| 久久国产精品色av免费看| 久久高清一区| 妖精视频成人观看www| 欧美 日韩 国产一区二区在线视频| 色爱综合网欧美| 精品高清久久| 国产福利91精品一区二区| 久久99国产精品视频| 国产精品成人国产| 国产私拍福利精品视频二区| 911亚洲精品| 日韩专区一卡二卡| 99xxxx成人网| 亚洲一区二区三区高清| 1024精品久久久久久久久| 免费观看不卡av| 激情综合亚洲| 好看的亚洲午夜视频在线| 91成人精品视频| 影音先锋久久| 国产婷婷精品| 蜜桃av一区二区三区电影| 免播放器亚洲一区| 亚洲人亚洲人色久| 国产日韩免费| 国产一区二区三区久久 | 亚洲欧美综合| 99re国产精品| 免费观看日韩电影| 日本一区二区三区视频在线看| 日韩欧美高清一区二区三区| 日本欧美大码aⅴ在线播放| 国产精品主播| 色欧美自拍视频| 久久视频国产| 丝袜美腿亚洲一区| 久久激情五月婷婷| 牛牛精品成人免费视频| 国产suv精品一区| 美女网站一区| 婷婷综合成人| 精品一区二区三区中文字幕视频 | 国产一区2区在线观看| 午夜av不卡| 欧美日韩免费观看一区=区三区| 免费人成在线不卡| 国产欧美高清| 成人精品久久| 婷婷色综合网| 国产日韩高清一区二区三区在线 | 国产精品超碰| 神马午夜久久| 亚洲欧洲av| 精品免费视频| 国产亚洲毛片在线| 日韩激情中文字幕| 国产a久久精品一区二区三区| 婷婷六月综合| 国产情侣一区| 亚洲国产一区二区在线观看| 欧美亚洲人成在线| 精品丝袜在线| 日韩激情啪啪| 午夜精品久久久久久久久久蜜桃| 亚洲中午字幕| 久久精品福利| 亚洲欧美高清| 捆绑调教美女网站视频一区 | 99久久www免费| 日韩精品亚洲专区在线观看| 国产美女高潮在线观看| 在线免费观看亚洲| 成人在线视频免费| 综合欧美亚洲| 蜜桃精品在线| 久久国产三级精品| 欧美日韩国产亚洲一区| 精品一区av| 一二三区精品| 成人午夜精品| 国产精东传媒成人av电影| 鲁大师影院一区二区三区| 久久久久久网| 日日夜夜免费精品视频| 99热精品久久| 美女视频黄久久| 视频一区二区三区入口| 日韩大片在线观看| 日本高清久久| 尤物在线精品| 精品国产欧美| 欧美一级一区| 爽好久久久欧美精品| 人人香蕉久久| 狠狠久久伊人中文字幕| 日韩av中文在线观看| 黑丝一区二区| 久久三级视频| 国产一区二区久久久久| 午夜久久av| 亚洲在线网站| 欧美亚洲精品在线| www在线观看黄色| 久久精品福利| 国产精品亚洲综合色区韩国| 亚洲人成亚洲精品| 亚洲激精日韩激精欧美精品| 一区二区三区四区日本视频| 欧美极品中文字幕| 国产日产精品_国产精品毛片 | 欧美在线看片| 亚洲三级视频| 久久亚洲一区| 99综合视频| 亚洲免费高清| 精品一区毛片| 欧美丝袜一区| 99久久九九| 在线亚洲人成| 在线观看精品| 久久久夜夜夜| 欧美影院三区| 亚洲午夜91| 欧美99久久|