代码之家  ›  专栏  ›  技术社区  ›  showkey

如何让我的scrapy读取同一目录下的文件?

  •  0
  • showkey  · 技术社区  · 6 年前

    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
    

    我已经测试了上面的 可以使用以下命令在本地pc端成功运行:

    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=“./url.txt”

    何时在远程端运行它 .

    0 回复  |  直到 6 年前
        1
  •  1
  •   showkey    6 年前

    1.添加新目录并移动 urls.txt 在里面。
    添加新目录的步骤 resources ,然后保存 url.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.重写 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