【问题标题】:Setting Scrapy start_urls from a Script从脚本设置 Scrapy start_urls
【发布时间】:2014-06-22 04:37:52
【问题描述】:

我有一个工作的scrapy spider,我可以通过example here 之后的单独脚本运行它。我还为我的脚本创建了一个 wxPython GUI,它只包含一个多行 TextCtrl,供用户输入要抓取的 URL 列表和要提交的按钮。目前 start_urls 被硬编码到我的蜘蛛中 - 如何将在我的 TextCtrl 中输入的 URL 传递给我的蜘蛛中的 start_urls 数组?提前感谢您的帮助!

【问题讨论】:

    标签: python python-2.7 wxpython web-scraping scrapy


    【解决方案1】:

    alecxe 答案对我不起作用。我的解决方案适用于 Scrapy==1.0.3:

    from scrapy.crawler import CrawlerProcess
    from tutorial.spiders.some_spider import SomeSpider
    
    process = CrawlerProcess()
    
    process.crawl(SomeSpider, start_urls=["http://www.example.com"])
    process.start()
    

    它可能会在未来帮助某人。

    【讨论】:

      【解决方案2】:

      只需在您的 Spider 实例上设置 start_urls:

      spider = FollowAllSpider(domain=domain)
      spider.start_urls = ['http://google.com']
      

      【讨论】:

      • 谢谢,这有效 - 但是,只有一个 URL。它似乎没有将多行上的多个 URL 解析为 start_urls 的正确格式。我在输入单个 URL 时得到结果,但不是多个。关于如何做到这一点的任何建议?这是我目前的做法:spider.start_urls = [self.tc2.GetValue()]
      • 如何设置多个url? self.tc2 是什么?
      • 对不起,self.tc2 是我的多行 TextCtrl。例如,当我使用 savefile = open('urls.txt', 'w') savefile.write(self.tc2.GetValue()) 时,它会创建一个包含多行的文本文件,就像它被输入到 TextCtrl 中一样。我想我需要知道的是如何将多行解析为数组格式,其中每行用逗号分隔。这有意义吗?
      • @user994585 试试spider.start_urls = self.tc2.GetValue().splitlines()。
      猜你喜欢
      • 1970-01-01
      • 2019-09-11
      • 2013-12-05
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多