鍍金池/ 問(wèn)答/Python/ Python3 Scrapy框架中進(jìn)入callback函數(shù),但第一級(jí)取的值存入數(shù)

Python3 Scrapy框架中進(jìn)入callback函數(shù),但第一級(jí)取的值存入數(shù)據(jù)庫(kù)中都重復(fù)

-- coding: utf-8 --

import scrapy,re
from scrapy.selector import Selector
from scrapy.http import Request
from novelspider.items import NovelspiderItem
import re

class novelSpider(scrapy.Spider):

name = 'novelSpider'
allowed_domains = ["www.tibetif.com"]
url = "http://www.tibetif.com/index.php?m=content&c=index&a=lists&catid=955"
start_urls = [url]

def parse(self, response):
    item = NovelspiderItem()
    list = response.xpath(".//table[@class='proinfo']/tbody/tr")
    for i in range(2,len(list)):
        item['projectNo'] = list[i].xpath(".//td/text()").extract()[0].strip()
        item['url'] = list[i].xpath(".//td[2]/a/@href").extract()[0]
        item['title'] = list[i].xpath(".//td[2]/a/text()").extract()[0]
        item['money'] = list[i].xpath(".//td[4]/text()").extract()[0]
        item['date'] = list[i].xpath(".//td[5]/text()").extract()[0]
        yield scrapy.Request(item['url'],meta={'item':item},callback=self.detail)

def detail(self,response):
    item = response.meta['item']
    selector = Selector(response)
    text = selector.xpath(".//div[@class='wrapper']/table[3]").xpath('string(.)').extract()[0].replace("\n"," ").replace("\t"," ").replace("\r"," ").strip('\n').strip('\t').strip('\r').lstrip().rstrip()
    print(item['title'])
    companyObj = re.search(r'標(biāo)的企業(yè)名稱\s*(\S+)',text)
    if companyObj:
        item['company'] = str(companyObj.group(1))
    priceObj = re.search(r'注冊(cè)資本\(元\)\s*(\S+)',text)
    if priceObj:
        item['price'] = str(priceObj.group(1))
    return item
    
    

問(wèn)題:Python3 Scrapy框架中不進(jìn)入yield scrapy.Request(item['url'],meta={'item':item},callback=self.detail)中的callback=self.detail函數(shù),導(dǎo)致數(shù)據(jù)庫(kù)中在parse函數(shù)中取得的值都是最后一個(gè)頁(yè)面的值

回答
編輯回答
愚念

Python3已經(jīng)支持scrapy啊

2017年7月24日 15:11
編輯回答
蟲(chóng)児飛

scrapy框架出python3版本了嗎

2018年5月26日 22:21
編輯回答
情未了

親測(cè)可以進(jìn)入detail

clipboard.png

感覺(jué)你最好yeild item試試?

2017年7月22日 08:33
編輯回答
陪她鬧

你把detail的最后一行 return item 改成 yield item試試

2017年3月28日 20:06