色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

python - 用scrapy爬取網(wǎng)站內(nèi)容時,如何忽略某些內(nèi)容為空的值;

瀏覽:99日期:2022-06-28 13:59:25

問題描述

我爬取京東上所有手機信息時會碰到如下問題:1、返回值過多,如下圖片所示:python - 用scrapy爬取網(wǎng)站內(nèi)容時,如何忽略某些內(nèi)容為空的值;

2、spider代碼如下:

-- coding: utf-8 --

import scrapyfrom scrapy.http import Requestfrom ueinfo.items import UeinfoItem

class MrueSpider(scrapy.Spider):

name = ’mrue’allowed_domains = [’jd.com’]start_urls = [’http://jd.com/’]def parse(self, response): key='手機' for i in range(1,2):url='https://search.jd.com/Search?keyword='+str(key)+'&enc=utf-8&page='+str((i*2)-1)#print(url)yield Request(url=url,callback=self.page)def page(self,response): #body=response.body.decode('utf-8','ignore') allid=response.xpath('//p[@class=’p-focus’]//a/@data-sku').extract() for j in range(0,len(allid)):thisid=allid[j]url1='https://item.jd.com/'+str(thisid)+'.html'#print(url1)yield Request(url=url1,callback=self.next)def next(self,response): item=UeinfoItem() item['pinpai']=response.xpath('//ul[@id=’parameter-brand’]/li/@title').extract() #print(item['pinpai']) item['xinghao']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’型號’]/following::*[1]').extract() #print(item['xinghao']) item['nianfen']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’上市年份’]/following::*[1]').extract() #print(item['nianfen']) item['yuefen']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’上市月份’]/following::*[1]').extract() #print(item['yuefen']) item['caozuoxt']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’操作系統(tǒng)’]/following::*[1]').extract() #print(item['caozuoxt']) item['cpupp']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’CPU品牌’]/following::*[1]').extract() #print(item['cpupp']) item['cpuhs']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’CPU核數(shù)’]/following::*[1]').extract() #print(item['cpuhs']) item['cpuxh']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’CPU型號’]/following::*[1]').extract() #print(item['cpuxh']) item['shuangkalx']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’雙卡機類型’]/following::*[1]').extract() #print(item['shuangkalx']) item['mfnetwangl']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’4G網(wǎng)絡(luò)’]/following::*[1]').extract() #print(item['mfnetwangl']) item['fnetwangl']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’網(wǎng)絡(luò)頻率(4G)’]/following::*[1]').extract() #print(item['fnetwangl']) item['netwanglplus']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’指紋識別’]/following::*[1]').extract() #print(item['netwanglplus']) item['volte']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’高清語音通話(VOLTE)’]/following::*[1]').extract() #print(item['volte']) item['screenstyle']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’主屏幕尺寸(英寸)’]/following::*[1]').extract() #print(item['screenstyle']) item['fenbiel']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’分辨率’]/following::*[1]').extract() #print(item['fenbiel']) item['dianchirl']=response.xpath('//p[@class=’Ptable’]//p[@class=’Ptable-item’]//dl//dt[text()=’電池容量(mAh)’]/following::*[1]').extract() #print(item['dianchirl']) yield item

pipelines的代碼如下:

-- coding: utf-8 --

import pymysql

class UeinfoPipeline(object):

def __init__(self): self.conn=pymysql.connect(host='127.0.0.1',user='root',passwd='root',db='mysql')def process_item(self, item, spider): try:pinpai=item['pinpai'][0]xinghao=item['xinghao'][0]nianfen=item['nianfen'][0]yuefen=item['yuefen'][0]caozuoxt=item['caozuoxt'][0]coupp=item['cpupp'][0]cpuhs=item['cpuhs'][0]cpuxh=item['cpuxh'][0]shuangkalx=item['shuangkalx'][0]mfnetwangl=item['mfnetwangl'][0]fnetwangl = item['fnetwangl'][0]netwanglplus=item['netwanglplus'][0]volte=item['volte'][0]screenstyle=item['screenstyle'][0]fenbiel=item['fenbiel'][0]dianchirl=item['dianchirl'][0]sql='insert into uems(pinpai,xinghao,nianfen,yuefen,caozuoxt,cpupp,cpuhs,cpuxh,shuangkalx,mwangluo,fwangluo,wangluoplus,volte,screenstyle,fenbian,dianchi)VALUES(’'+pinpai+'’,’'+xinghao+'’,’'+nianfen+'’,’'+yuefen+'’,’'+caozuoxt+'’,’'+coupp+'’,’'+cpuhs+'’,’'+cpuxh+'’,’'+shuangkalx+'’,’'+mfnetwangl+'’,’'+fnetwangl+'’,’'+netwanglplus+'’,’'+volte+'’,’'+screenstyle+'’,’'+fenbiel+'’,’'+dianchirl+'’)'self.conn.query(sql)#print(mfnetwangl)return item except Exception as err:passdef close_spider(self): self.conn.close()

問題解答

回答1:

pipelines中的

def close方法定義錯誤了

應(yīng)為這樣

def close(self, spider)

至于忽略某些內(nèi)容為空的值用for 可能節(jié)省代碼!

def process_item(self, item, spider): for k,v in item.items():if v == ’’: raise DropItem(repr(item))

標(biāo)簽: Python 編程
主站蜘蛛池模板: 国内国语一级毛片在线视频 | 亚洲国产精品激情在线观看 | 在线观看日本永久免费视频 | 日本在线观看不卡免费视频 | 久久99国产一区二区三区 | 成年男女男精品免费视频网站 | 中文字幕1区 | 国内精品不卡一区二区三区 | 成人免费真人毛片视频 | 久久精品国产免费看久久精品 | 欧美久| 好吊操这里只有精品 | 国产三级小视频 | 国产成人久久精品推最新 | 成人网视频在线观看免费 | 91精品一区二区三区在线播放 | 欧美在线观看免费一区视频 | 日本高清乱偷www | 成人小视频在线观看免费 | 久久久久久久免费 | 日韩视频在线观看 | 91av视频| 久久亚洲国产精品一区二区 | 国产精品国产精品国产三级普 | 九久久 | 最新99国产成人精品视频免费 | 亚洲成a人片在线v观看 | 亚洲国产精品成人综合久久久 | 男女配种猛烈免费视频 | 国产成人小视频在线观看 | 日本久久综合 | 国产成人a一区二区 | 日本一区二区三区精品视频 | 91精品免费国产高清在线 | 久久欧美精品欧美九久欧美 | 成人免费在线播放视频 | 国产高清一 | 精品国产杨幂在线观看福利 | 性欧美另类老妇高清 | 毛片免费在线观看 | 99热久久国产综合精品久久国产 |