簡體   English   中英

為什么scrapy在嘗試蜘蛛和解析網站時會給我一個錯誤?

[英]Why does scrapy throw an error for me when trying to spider and parse a site?

以下代碼

class SiteSpider(BaseSpider):
    name = "some_site.com"
    allowed_domains = ["some_site.com"]
    start_urls = [
        "some_site.com/something/another/PRODUCT-CATEGORY1_10652_-1__85667",
    ]
    rules = (
        Rule(SgmlLinkExtractor(allow=('some_site.com/something/another/PRODUCT-CATEGORY_(.*)', ))),

        # Extract links matching 'item.php' and parse them with the spider's method parse_item
        Rule(SgmlLinkExtractor(allow=('some_site.com/something/another/PRODUCT-DETAIL(.*)', )), callback="parse_item"),
    )
    def parse_item(self, response):
.... parse stuff

引發以下錯誤

Traceback (most recent call last):
  File "/usr/lib/python2.6/dist-packages/twisted/internet/base.py", line 1174, in mainLoop
    self.runUntilCurrent()
  File "/usr/lib/python2.6/dist-packages/twisted/internet/base.py", line 796, in runUntilCurrent
    call.func(*call.args, **call.kw)
  File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 318, in callback
    self._startRunCallbacks(result)
  File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 424, in _startRunCallbacks
    self._runCallbacks()
--- <exception caught here> ---
  File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 441, in _runCallbacks
    self.result = callback(self.result, *args, **kw)
  File "/usr/lib/pymodules/python2.6/scrapy/spider.py", line 62, in parse
    raise NotImplementedError
exceptions.NotImplementedError: 

當我將回調更改為“解析”並將函數更改為“解析”時,我沒有收到任何錯誤,但沒有任何內容被刪除。 我將其更改為“parse_items”,以為我可能會意外地覆蓋解析方法 也許我正在設置鏈接提取器錯誤?

我想要做的是解析CATEGORY頁面上的每個ITEM鏈接。 我這樣做完全錯了嗎?

我需要將BaseSpider更改為CrawlSpider。 謝謝srapy用戶!

http://groups.google.com/group/scrapy-users/browse_thread/thread/4adaba51f7bcd0af#

嗨鮑勃,

如果從BaseSpider更改為CrawlSpider,它可能會有用嗎? BaseSpider似乎沒有實現規則,請參閱:

http://doc.scrapy.org/topics/spiders.html?highlight=rule#scrapy.contr ...

-M

默認情況下,scrapy在類中搜索解析函數。 在您的蜘蛛中,缺少解析功能。 而不是解析你給了parse_item。 如果用parse替換parse_item,問題就解決了。 或者您可以使用parse_item覆蓋spider.py中的parse方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM