繁体   English   中英

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

[英]Scrapy crawl error: [Error 123]The filename, directory name, or volume label syntax is incorrect

我正在Windows中使用scrapy进行编程,并且正在输入命令

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

这是我养蜘蛛的路。 但是,当我通过运行crawl命令将Spider进行测试运行时,出现以下错误。

文件``C:\\ python27 \\ lib \\ os.py'',行157,在makedirs mkdir(name,mode)中

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

原来问题出在\\ natliq中的n看起来像是Windows CMD中的某种命令,因此它被混淆并抛出错误。 这次,我重新创建了以L开头的文件夹和Spider命名项目,现在它可以正常工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM