Python Scrapy未进入解析方法
我对Scrapy有一个问题,由于某种原因它没有进入我的解析方法,我不知道为什么会这样。我尝试过不同的选择,但没有成功 这就是我的代码现在的样子。具体来说,有两条print语句,并且parse()方法中的一条语句没有被调用Python Scrapy未进入解析方法,python,python-2.7,web-scraping,scrapy,Python,Python 2.7,Web Scraping,Scrapy,我对Scrapy有一个问题,由于某种原因它没有进入我的解析方法,我不知道为什么会这样。我尝试过不同的选择,但没有成功 这就是我的代码现在的样子。具体来说,有两条print语句,并且parse()方法中的一条语句没有被调用 from scrapy.spider import BaseSpider from scrapy.selector import HtmlXPathSelector from scrapy import log from scrapy.contrib.spiders impor
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy import log
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from comments.items import CustomerReview
import re
class AppidSpider(BaseSpider):
name = "appid"
allowed_domains = ["itunes.apple.com"]
start_urls = [
"http://itunes.apple.com/us/genre/ios/id36?mt=8"
]
rules = [Rule(SgmlLinkExtractor(), follow=True, callback='parse')]
print "---> THIS IS TEST 1"
def parse(self, response):
print " ----> THIS IS TEST 2"
# ... More code afterwards
这就是输出。如您所见,测试2从未打印
$ scrapy crawl appid
2012-07-05 13:41:02+0000 [scrapy] INFO: Scrapy 0.14.4 started (bot: comments)
2012-07-05 13:41:02+0000 [scrapy] DEBUG: Enabled extensions: LogStats, TelnetConsole, CloseSpider, WebService, CoreStats, MemoryUsage, SpiderState
---> THIS IS TEST 1
2012-07-05 13:41:02+0000 [scrapy] DEBUG: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, RedirectMiddleware, CookiesMiddleware, HttpCompressionMiddleware, ChunkedTransferMiddleware, DownloaderStats
2012-07-05 13:41:02+0000 [scrapy] DEBUG: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware
2012-07-05 13:41:02+0000 [scrapy] DEBUG: Enabled item pipelines: FilterWordsPipeline
2012-07-05 13:41:02+0000 [appid] INFO: Spider opened
2012-07-05 13:41:02+0000 [appid] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2012-07-05 13:41:02+0000 [scrapy] DEBUG: Telnet console listening on 0.0.0.0:6023
2012-07-05 13:41:02+0000 [scrapy] DEBUG: Web service listening on 0.0.0.0:6080
2012-07-05 13:41:02+0000 [appid] DEBUG: Crawled (200) <GET http://itunes.apple.com/us/genre/ios/id36?mt=8> (referer: None)
2012-07-05 13:41:02+0000 [appid] INFO: Closing spider (finished)
2012-07-05 13:41:02+0000 [appid] INFO: Dumping spider stats:
{'downloader/request_bytes': 222,
'downloader/request_count': 1,
'downloader/request_method_count/GET': 1,
'downloader/response_bytes': 9927,
'downloader/response_count': 1,
'downloader/response_status_count/200': 1,
'finish_reason': 'finished',
'finish_time': datetime.datetime(2012, 7, 5, 13, 41, 2, 694678),
'scheduler/memory_enqueued': 1,
'start_time': datetime.datetime(2012, 7, 5, 13, 41, 2, 604025)}
2012-07-05 13:41:02+0000 [appid] INFO: Spider closed (finished)
2012-07-05 13:41:02+0000 [scrapy] INFO: Dumping global stats:
{'memusage/max': 95318016, 'memusage/startup': 95318016}
$scrapy crawl appid
2012-07-05 13:41:02+0000[scrapy]信息:scrapy 0.14.4已启动(机器人:注释)
2012-07-05 13:41:02+0000[scrapy]调试:启用的扩展:LogStats、TelnetConsole、CloseSpider、WebService、CoreStats、MemoryUsage、SpiderState
--->这是测试1
2012-07-05 13:41:02+0000[scrapy]调试:启用的下载中间件:HttpAuthMiddleware、DownloadTimeoutMiddleware、UserAgentMiddleware、RetryMiddleware、DefaultHeadersMiddleware、RedirectMiddleware、Cookies中间件、HttpCompressionMiddleware、ChunkedTransferMiddleware、DownloadersStats
2012-07-05 13:41:02+0000[scrapy]调试:启用的spider中间件:HttpErrorMiddleware、OffsiteMiddleware、referermidleware、urlengthmiddleware、DepthMiddleware
2012-07-05 13:41:02+0000[scrapy]调试:启用的项目管道:过滤器或Spipeline
2012-07-05 13:41:02+0000[appid]信息:蜘蛛已打开
2012-07-05 13:41:02+0000[appid]信息:爬网0页(以0页/分钟的速度),刮取0项(以0项/分钟的速度)
2012-07-05 13:41:02+0000[scrapy]调试:Telnet控制台在0.0.0.0上侦听:6023
2012-07-05 13:41:02+0000[scrapy]调试:在0.0.0.0:6080上侦听Web服务
2012-07-05 13:41:02+0000[appid]调试:已爬网(200)(参考:无)
2012-07-05 13:41:02+0000[appid]信息:关闭十字轴(已完成)
2012-07-05 13:41:02+0000[appid]信息:转储蜘蛛统计信息:
{'downloader/request_bytes':222,
“下载程序/请求计数”:1,
“downloader/request\u method\u count/GET”:1,
“downloader/response_bytes”:9927,
“下载程序/响应计数”:1,
“下载程序/响应状态\计数/200”:1,
“完成原因”:“完成”,
“完成时间”:datetime.datetime(2012,7,5,13,41,2694678),
“调度程序/内存已排队”:1,
“开始时间”:datetime.datetime(2012,7,5,13,41,2604025)}
2012-07-05 13:41:02+0000[appid]信息:蜘蛛侠关闭(已完成)
2012-07-05 13:41:02+0000[scrapy]信息:倾销全球统计数据:
{'memusage/max':95318016,'memusage/startup':95318016}
为什么要将parse作为字符串传递?请尝试callback=self.parse
。为什么要将parse作为字符串传递?尝试callback=self.parse
。正如Creshal在callback中所说,您需要使用call-some方法,而不是parse,您的其他自定义方法
但在这种情况下,这不应该是问题,因为你实际上没有任何规则可以遵循,所以这并不重要
我尝试了你的代码,它对我来说很好,它打印出了两条消息。正如Creshal在callback中所说,你需要使用call-some方法,而不是parse,你的其他自定义方法 但在这种情况下,这不应该是问题,因为你实际上没有任何规则可以遵循,所以这并不重要
我尝试了你的代码,它对我来说很好,它可以打印两条消息。谢谢。当我放置self.parse时,我得到了错误名称error:name'self'未定义,这可能相关吗?可能是缩进或其他什么问题?可能是。摘录的缩进毫无意义,我猜调用和解析方法都属于这个类。是吗?我一问这个问题就试过了。不知道是什么,但这是压痕的问题。我重新缩进了整个剧本,现在效果很好。看起来它本来是给我的:)谢谢。当我放置self.parse时,我得到了错误名称error:name'self'未定义,这可能相关吗?可能是缩进或其他什么问题?可能是。摘录的缩进毫无意义,我猜调用和解析方法都属于这个类。是吗?我一问这个问题就试过了。不知道是什么,但这是压痕的问题。我重新缩进了整个剧本,现在效果很好。看起来对我来说是:)谢谢你的帮助。这不是答案,但它让我找到了答案,事实是它对你有效,而不是对我。帮助的要点。这不是答案,但它让我找到了答案,事实上它对你有效,而不是对我有效。如果你使用规则,你应该从爬行蜘蛛而不是BaseSpider继承,并为解析方法选择一个不同的名称(而不是“parse”)。谢谢,这可以解释我现在面临的第二个问题。如果你使用规则,您应该从CrawlSpider而不是BaseSpider继承,并为解析方法选择一个不同的名称(而不是“parse”)。谢谢,这可以解释我现在面临的第二个问题。