2016-03-04 204 views
0

我的Scrapy爬蟲工作正常,目前他正在爬取一些表格,但在某些網站上並沒有所有我喜歡插入到我的mysql表格中的信息。 所以我想加入他們自己,因爲在這些網站上的信息是爲這些領域相同的,但我不知道如何在蜘蛛中填充它們。如何使用硬編碼字符串填充scrapy項目列表

當然,我可以確定管道中的其中一個列表的長度,然後使用while循環在項目['country']列表中添加例如USA,但是我想在蜘蛛中執行相同的操作。

我會apppreciate一些幫助,謝謝。用於填充列表

當前蜘蛛代碼:

def parse(self, response): 
    for sel in response.xpath('//div[@class="pagecontainer"]'): 
     item = EbayItem() 
     item['id'] = sel.xpath('div[2]/text()[2]').extract() 
     item['user'] = sel.xpath('tr/td[2]/text()[1]').extract() 
     item['string'] = sel.xpath ('tr/td[2]/a/text()').extract() 
     item['state'] = sel.xpath('tr/td[3]/b[3]/text()').extract() 
     item['country'] = sel.xpath('tr/td[3]/b[1]/text()').extract()   
     item['weight'] = sel.xpath('tr/td[3]/b[2]/text()').extract() 
     item['position'] = sel.xpath('tr/td[4]/text()').re(r'[0-9,\-]+') 
     item['old'] = sel.xpath('tr/td[5]/text()').extract() 
     item['datetime'] = sel.xpath('tr/td[6]/text()').re('[0-9]{2}.[0-9]{2}.[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}') 
     yield item 

問候

P.Halmsich

+0

你需要在解析像'項目[ '國家'] =「USA''()?如果不是,你能否給我們一個你想要的例子。 – Steve

回答

0

您可以隨時檢查刮項目使用if-else空語句的結果。試試下面的代碼:

def parse(self, response): 
for sel in response.xpath('//div[@class="pagecontainer"]'): 
    item = EbayItem() 
    item['id'] = sel.xpath('div[2]/text()[2]').extract() 
    item['user'] = sel.xpath('tr/td[2]/text()[1]').extract() 
    item['string'] = sel.xpath ('tr/td[2]/a/text()').extract() 
    item['state'] = sel.xpath('tr/td[3]/b[3]/text()').extract() 
    item['country'] = sel.xpath('tr/td[3]/b[1]/text()').extract() 
    if item['country'] == []: 
     item['country'] = 'USA' 
    item['weight'] = sel.xpath('tr/td[3]/b[2]/text()').extract() 
    item['position'] = sel.xpath('tr/td[4]/text()').re(r'[0-9,\-]+') 
    item['old'] = sel.xpath('tr/td[5]/text()').extract() 
    item['datetime'] = sel.xpath('tr/td[6]/text()').re('[0-9]{2}.[0-9]{2}.[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}') 
    yield item 
0

你想在MySQL中添加東西。這意味着您的字段不應該是數組(例如['my-value']),而是標量(例如'my-value')。最簡單的方法是使用extract_first()而不是extract()

extract_first()允許您設置的默認值是這樣的:.extract_first(default='my-default-value')或只是.extract_first('my-default-value')

乾杯

相關問題