2017-09-26 27 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