2017-09-26 58 views
0

我使用scrapy检查的某些服装产品我感兴趣的价格和可用性改变的Python:运行scrapy蜘蛛无限期地监视页面

程序本身按预期工作,但现在我。我不知道如何让它不断循环以作为页面监视器工作。我打算租了一个服务器有它运行的不确定状态,如果有一个在可用性或价格变化,它将通过松弛通知我。我只用一个蜘蛛,所以我的代码看起来是这样的:

class MonitorSpider(SitemapSpider): 
    name = 'page_monitor' 
    sitemap_urls = [ 
    'https://www.example.com/sitemap.xml' 
    'https://www.example.com/sitemap.xml' 
    'https://www.example.com/sitemap.xml' 
    ] 

    # Using the sitemap rules so time won't be wasted following links I don't care about 
    sitemap_rules =[('keyword', 'parse')] 

    def parse(self, response): 
     magically get price and availability 

而且,如果任何人都可以解决一个辩论中,我曾与一个朋友早些时候,会是非常有益的了。他认为美丽的汤会运行这样一个项目更快,但我认为scrapy是更好的选择,因为我已经在过去scrapy碰到的问题是,它通常是太快,可以让你暂时IP来自禁止网站(我计划采用代理来解决这个问题)。我知道我可以制作一个脚本,使用美丽的汤复制这个脚本,然后测试这两个脚本,但是如果没有必要,我宁愿不这样做。

速度是关于这个计划非常重要。如果ASAP可用,我希望收到通知。

回答

2

如果你想刮同一网址 - 你应该得到它更多的时间:

def parse(self, response): 
    magically get price and availability 
    yield scrapy.Request(response.url, callback=self.parse, dont_filter=True) 

答案为您和您的朋友辩论是在Scrapy documentation

BeautifulSoup和LXML是库用于解析HTML和XML。 Scrapy 是用于编写Web蜘蛛抓取从他们的Web站点 和提取数据的应用程序框架。

Scrapy提供了用于提取数据(称为 选择)一个内置的机制,但你可以很容易地使用BeautifulSoup(或LXML)来代替,如果 你感觉更舒服和他们一起工作。毕竟,他们只是 可以导入并从任何Python代码使用解析库。

换句话说,比较BeautifulSoup(或lxml)和Scrapy就像 比较jinja2和Django。

+0

哇,真的不知道我怎么也没想到,只是产生功能的第二次。另外,jinja2应该比django快,所以它说美丽的人比scrapy快? Scrapy可以同时运行多个请求,而bs4不能。您认为在抓取产品链接的站点地图时速度会更快 – barnesc