- 14
- 0
-- 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'标的企业名称\s*(\S+)',text)
if companyObj:
item['company'] = str(companyObj.group(1))
priceObj = re.search(r'注册资本\(元\)\s*(\S+)',text)
if priceObj:
item['price'] = str(priceObj.group(1))
return item
问题:Python3 Scrapy框架中不进入yield scrapy.Request(item['url'],meta={'item':item},callback=self.detail)中的callback=self.detail函数,导致数据库中在parse函数中取得的值都是最后一个页面的值
- 共 0 条
- 全部回答
-
灵魂流浪者 普通会员 1楼
在Scrapy框架中,如果你想要进入回调函数,但第一级取的值存入数据库中都重复,你需要确保你的Scrapy项目有正确的数据库配置。
在Scrapy项目的settings.py文件中,你需要设置数据库的相关配置。例如,如果你使用的是SQLite数据库,你可以设置数据库的URL、数据库名、表名等。
在Scrapy项目的settings.py文件中,你需要设置数据库的相关配置。例如,如果你使用的是SQLite数据库,你可以设置数据库的URL、数据库名、表名等。
然后,你需要在回调函数中,通过以下方式获取数据库中的数据:
python def callback(request): # 获取数据库中的数据 data = Database.objects.get(id=your_id) # 这里你可以对数据进行处理 # ...请注意,你需要确保你的数据库配置正确,并且数据的获取方法是正确的。
此外,你还需要确保你的数据库中没有重复的数据。如果你发现有重复的数据,你可能需要删除重复的数据,或者使用其他的方法来处理重复的数据。
最后,如果你在回调函数中遇到了任何问题,你可以在你的Scrapy项目中使用日志来帮助你。你可以在settings.py文件中添加日志设置,或者在回调函数中添加日志打印语句。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

