【问题标题】:How to use Scrapy with Spyder or VScode如何在 Spyder 或 VScode 中使用 Scrapy
【发布时间】:2019-12-14 06:20:43
【问题描述】:

我希望你们一切都好,一切都好。 我想将 Scrapy 与 Spyder 一起使用,而不是通过终端/shell 使用它。我是 Windows 用户,Scrapy 版本 1.8.0,pyhton 3.7.3,我遇到了 BeautifulSoup 的问题。 例如,我试图从网站上获取产品的价格,问题是它并不总是能获取数据,但 Scrapy 在这里使用 CSS 选择器可以完美地工作。 所以我想将 Scrapy 与 Spyder 或 Vscode 一起使用,因为我还有其他代码将依赖于 Scrapy 的输出。

【问题讨论】:

    标签: beautifulsoup scrapy


    【解决方案1】:

    实际上你需要一个编辑器来编写你的蜘蛛程序来抓取和抓取网页,在你开始真正编写蜘蛛程序之前,shell 更像是一个测试环境。所以从终端

    $workon my_virtual
    

    在特定的虚拟环境中工作。 cd 到相应的目录

    $pip install scrapy
    

    在你的虚拟环境中安装scrapy

    $scrapy startproject myspider
    

    这会在您所在的目录中启动并运行您需要的一切。

    $scrapy genspider <spidername> <base_url>
    

    这将自动为您生成一个蜘蛛。有关如何操作的更多详细信息,您可能需要参考scrapy 文档。

    您可以使用 subprocess 模块与另一个 python 程序一起执行 python 脚本。

    def otherfunc(crawler_output):
        #do something with the gotten out put  
    
    def myfunction():
        os.chdir('scrapy directory')
    
        subprocess.Popen(['scrapy', crawl], shell=True) 
    
        output, err = Popen.communicate()
        os.chdir('initail working directory')
        otherfunction(output)
    

    此方法直接从 shell 上的 scrapy 爬虫获取输出并将其提供给您的代码。另一种使用类似原理更安全的方法是

    def otherfunc(crawler_output):
        #locate the file within your directories
        #do something with the gotten out put  
    
    def myfunction():
        os.chdir('scrapy directory')
    
        subprocess.Popen(['scrapy', crawl, name, -o, file.csv], shell=True) 
    
    
        otherfunction(file.csv)
    

    这样你将处理一个文件,但文件的内容将是从scrapy得到的结果

    【讨论】:

    • 这又是一样的,我希望它与我的其他代码一起使用,例如我有 Scrapy 的代码,并且还希望它与我在同一个文件中的其他代码一起使用。
    • 非常努力,但我正在云端制作一个机器人,主代码将从数据库中获取链接,然后主代码将调用所有机器人,这些机器人将根据我的需要获取数据并返回所有回到主代码 其他代码在 BeautifulSoup 上运行良好,但是对于这个我必须使用 Scrapy,我将无法运行任何脚本或为 scrapy 创建任何环境,有什么方法吗?我只需要创建该类的对象并调用 fetch 方法就可以自动完成了吗? Scrapy 代码还必须与我的其他依赖于其输出的代码一起使用。
    • 然后将爬取的结果存储在数据库中而不是文件文件格式中,然后从该数据库中提取。 Scrapy 可以轻松地将抓取的结果保存到数据库中
    猜你喜欢
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 2020-05-06
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    相关资源
    最近更新 更多