0

Windowsでscrapyを使用してプログラミングしており、コマンドを入力しています

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

これは私がクモを持っている道です。ただし、クロール コマンドを実行してスパイダーをテスト実行すると、次のエラーが発生します。

ファイル "C:\python27\lib\os.py"、157 行目、makedirs mkdir(name, mode)

WindowsError: [エラー 123] ファイル名、ディレクトリ名、またはボリューム ラベルの構文が正しくありません: 'c:\python27\natliq'

二重のバックスラッシュは入力していません。だから私の質問は、スクレイピーまたはウィンドウがどこからこのエラーを取得しているのかということだと思います。しかし、それを修正する方法は?

参考までに、土曜日にスパイダーをテストしましたが、うまくいきました。突然、このメッセージに直面し、解決方法がわかりません。

スパイダー コード:

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
4

1 に答える 1

0

問題は、\natliq の n が Windows CMD のある種のコマンドのように見えるため、混乱してエラーをスローしたことが判明しました。今回は L で始まるフォルダーとスパイダーの名前を付けてプロジェクトを再作成しましたが、現在は機能しています。

于 2013-08-09T15:52:58.380 に答える