【问题标题】:Scrapy crawl error: [Error 123]The filename, directory name, or volume label syntax is incorrectScrapy爬取错误:[错误123]文件名、目录名或卷标语法不正确
【发布时间】:2013-08-06 01:04:25
【问题描述】:

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

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

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

文件“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

【问题讨论】:

  • 发布您的来源。你运行的是什么版本的 Scrapy 和 Python?
  • 尝试使用原始字符串。 \n 可能是错误的来源。
  • 正如@SukritKalra 所说,'c:\python27\natliq' 中的 "\n" 不是解释为 "c:\python27" + + "atliq" 吗?星期六之后你有没有把你的蜘蛛位置改成“natliq”文件夹?
  • 我使用的是 python 2.7 和 scrapy 0.16.2。不,我没有更改蜘蛛的位置,我已经用 c:\python27\natliq 运行了代码,它成功地抓取了数据我的 CSV 文件中仍然有数据。如何在原始字符串中输入它?
  • c:\python27\natliq 是否有 spiders 文件夹、items.pypipelines.pysettings.py?试试scrapy list,结果如何?

标签: windows python-2.7 scrapy


【解决方案1】:

原来问题出在 \natliq 中的 n 看起来像它在 windows CMD 中的某种类型的命令,因此它变得混乱并引发错误。这次我重新创建了以 L 开头的文件夹和蜘蛛命名的项目,现在它正在工作。

【讨论】:

    猜你喜欢
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    相关资源
    最近更新 更多