2016-03-04 171 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')

干杯

相关问题