Scrapy爬网错误:[错误123]文件名,目录名或卷标语法不正确

时间:2013-08-06 01:04:25

标签: windows python-2.7 scrapy

我在windows中使用scrapy编程,我正在输入命令

  

C:\ Users \ David> cd c:\ python27 \ natliq

这是我拥有蜘蛛的路径。但是,当我通过运行crawl命令将我的蜘蛛带到测试运行时,我收到以下错误。

  

文件“C:\ python27 \ lib \ os.py”,第157行,在makedirs mkdir(名称,模式)

     

WindowsError:[错误123]文件名,目录名或卷标语法不正确:'c:\ python27 \ natliq'

我没有输入双反斜杠。所以我想我的问题是scrapy或windows从哪里得到这个错误。但是如何解决呢?

仅供参考,星期六我测试了我的蜘蛛,它起作用了。现在我突然面对这个消息,并且不知道如何解决。

蜘蛛码:

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from natliq.items import NatliqItem
from scrapy.http import Request
from scrapy.contrib.pipeline.images import ImagesPipeline
from PIL import Image


class NatliqSpider(CrawlSpider):
    name = "natliq"
    allowed_domain = [""]
    start_urls = [
    "http://www.yachtauctions.com/inventory/"
    ]

rules = (
    Rule(
        SgmlLinkExtractor(
            restrict_xpaths = ('//td/a[3] [@class="inv-link"]'),
            attrs = ('href'),
            ),
        follow=True,
        callback = 'item_parse',
        ),
    )
def item_parse(self, response):
    hxs = HtmlXPathSelector(response)
    sites = hxs.select('//div[@class="content-area"]/div[@class="listing"]')
    items = []
    for site in sites:
        item = NatliqItem()
        item['price'] = site.select('//table[@class="inv-table"]/tr[1]/td[2]/text()').extract()[0].strip()
        item['status'] = site.select('//table[@class="inv-table"]/tr[2]/td[2]/text()').extract()[0].strip()
        item['stock_number'] = site.select('//table[@class="inv-table"]/tr[3]/td[2]/text()').extract()[0].strip()
        item['vessel_type'] = site.select('//table[@class="inv-table"]/tr[4]/td[2]/text()').extract()[0].strip()
        item['year'] = site.select('//table[@class="inv-table"]/tr[5]/td[2]/text()').extract()[0].strip()
        item['make'] = site.select('//table[@class="inv-table"]/tr[6]/td[2]/text()').extract()[0].strip()
        item['model'] = site.select('//table[@class="inv-table"]/tr[7]/td[2]/text()').extract()[0].strip()
        item['description'] = site.select('//table[@class="inv-table"]/tr[11]/td[2]/text()').extract()[0].strip()
        item['has_engine'] = site.select('//div[2]/table[@class="inv-table"]/tr[1]/td[2]/text()').extract()[0].strip()
        item['numberOfEngines'] = site.select('//div[2]/table[@class="inv-table"]/tr[2]/td[2]/text()').extract()[0].strip()
        item['engine_make'] = site.select('//div[2]/table[@class="inv-table"]/tr[4]/td[2]/text()').extract()[0].strip()
        item['engine_model'] = site.select('//div[2]/table[@class="inv-table"]/tr[5]/td[2]/text()').extract()[0].strip()
        item['fuel_type'] = site.select('//div[2]/table[@class="inv-table"]/tr[6]/td[2]/text()').extract()[0].strip()
        item['engine_hp'] = site.select('//div[2]/table[@class="inv-table"]/tr[7]/td[2]/text()').extract()[0].strip()
        item['engine_hours'] = site.select('//div[2]/table[@class="inv-table"]/tr[8]/td[2]/text()').extract()[0].strip()
        item['location'] = site.select('//div[2]/table[@class="inv-table"]/tr[14]/td[2]/text()').extract()[0].strip()
        # item['image_urls'] = ["http://www.yachtauctions.com" + x for x in site.select('//ul[@class="thethumbs"]/li/a/@href').extract()[0].strip()
        items.append(item)
    return items

1 个答案:

答案 0 :(得分:0)

事实证明问题是在\ natliq中的n看起来像它在Windows CMD中的某种类型的命令,所以它得到了confuesd并抛出了错误。我已经重新创建了命名文件夹和蜘蛛的项目,这次以L开头,现在它正在运行。