Как заставить мою записку прочитать файл, который находится в том же каталоге? - PullRequest
0 голосов
/ 16 марта 2019

Целевой файл urls.txt содержит все URL для загрузки.

├─spiders
│  │  stockInfo.py
│  │  urls.txt
│  │  __init__.py

stockInfo.py - это мой файл.

import scrapy
import os
import re

class QuotesSpider(scrapy.Spider):
    name = "stockInfo"
    projectFile = r"d:/toturial/toturial/spiders/urls.txt"
    with open(projectFile,"r") as f:
        urls = f.readlines()
    start_urls = [url.strip() for url in urls]

    def parse(self, response):
        pass

Я проверил, что вышеприведенное stockInfo.py может успешно работать на моем локальном компьютере, и завершается командой:

scrapy crawl  stockInfo

Теперь я развернул проект на удаленном конце scrapy hub с

pip install shub
shub login
API key: xxxxxxxxxxxxxxxxx
shub deploy 380020

У него проблемы:

IOError: [Errno 2] No such file or directory: 'd:/toturial/toturial/spiders/urls.txt'

Как это исправить, когда развернуть мой scrapy в hub? Полезно переписать

projectFile = r "d: /toturial/toturial/spiders/urls.txt"

как

projectFile = "./urls.txt"

когда запустить его на моем локальном компьютере.

Странно, бесполезно переписывать

projectFile = r "d: /toturial/toturial/spiders/urls.txt"

как

projectFile = "./urls.txt"

когда запускать его на удаленном конце scrapy hub.

1 Ответ

0 голосов
/ 16 марта 2019

1.Добавьте новый каталог и переместите в него urls.txt.
Чтобы добавить новый каталог resources и сохранить в нем urls.txt.
Мое новое дерево каталогов показано ниже.

tutorial
├─tutorial
│  ├─resources
|     |--urls.txt
│  ├─spiders
|     |--stockInfo.py

2. переписать файл setup.py, как показано ниже.

from setuptools import setup, find_packages

setup(
    name='tutorial',
    version='1.0',
    packages=find_packages(),
    package_data={
        'tutorial': ['resources/*.txt']
    },
    entry_points={
        'scrapy': ['settings = tutorial.settings']
    },
    zip_safe=False,
)

3.rewrite stockInfo.py, как показано ниже.

import scrapy
import os 
import re
import pkgutil
class QuotesSpider(scrapy.Spider):
    name = "stockInfo"
    data = pkgutil.get_data("tutorial", "resources/urls.txt")
    data = data.decode()
    start_urls = data.split("\r\n")

    def parse(self, response):
        pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...