我使用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禁止从网站(我计划合并代理来解决这个问题)。我知道我可以用一个漂亮的汤来制作一个复制这个的脚本,然后测试这两个,但如果没有必要的话,我宁愿不这样做。
速度对于此计划非常重要。我希望尽快获得通知。
答案 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。