Python:无限期运行scrapy spider以监控页面更改

时间:2017-09-26 09:03:57

标签: python beautifulsoup scrapy

我使用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禁止从网站(我计划合并代理来解决这个问题)。我知道我可以用一个漂亮的汤来制作一个复制这个的脚本,然后测试这两个,但如果没有必要的话,我宁愿不这样做。

速度对于此计划非常重要。我希望尽快获得通知。

1 个答案:

答案 0 :(得分:3)

如果你想要刮同一个网址 - 你应该再次产生它:

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。