通过 API 调用更新 scrapinghub 托管的 Scrapy 项目的启动 url
Update start urls at scrapinghub hosted Scrapy project via API call
我的 Scrapy 蜘蛛托管在 scrapinghub。它通过 运行 spider API 调用进行管理。
蜘蛛从调用到调用唯一改变的是起始 url 列表。该列表可能从 100 个 url 到几千个不等。在这种情况下更新起始 url 的最佳方法是什么?
据我所知,在 SH API 中没有直接选项。
我正在考虑使用 URL 列表更新 MySql,更新后发送简单的 运行 作业 API 调用。 (起始网址将从 MySql table 生成)。
对此类解决方案或其他选项有何评论?
我目前的设置如下。
def __init__(self, startUrls, *args, **kwargs):
self.keywords = ['sales','advertise','contact','about','policy','terms','feedback','support','faq']
self.startUrls = startUrls
self.startUrls = json.loads(self.startUrls)
super(MySpider, self).__init__(*args, **kwargs)
def start_requests(self):
for url in self.startUrls:
yield Request(url=url)
您可以将参数传递给 scrapy spider 并在您的 spider 中读取它们。
发送编码为 JSON 的 URL 列表,然后对其进行解码,现在触发请求。
class MySpider(scrapy.Spider):
def __init__(self, startUrls, *args, **kwargs):
self.startUrls = startUrls
self.startUrls = json.loads(self.startUrls)
super(MySpider, self).__init__(*args, **kwargs)
def start_requests(self):
for url in self.startUrls:
yield Request(url=url ... )
这里是你如何运行将这个参数发送给你的蜘蛛。
curl -u APIKEY: https://app.scrapinghub.com/api/run.json -d project=PROJECT -d spider=SPIDER -d startUrls="JSON_ARRAY_OF_LINKS_HERE"
你的 scrapinghub.yml
文件应该是这样的
projects:
default: 160868
我的 Scrapy 蜘蛛托管在 scrapinghub。它通过 运行 spider API 调用进行管理。 蜘蛛从调用到调用唯一改变的是起始 url 列表。该列表可能从 100 个 url 到几千个不等。在这种情况下更新起始 url 的最佳方法是什么? 据我所知,在 SH API 中没有直接选项。 我正在考虑使用 URL 列表更新 MySql,更新后发送简单的 运行 作业 API 调用。 (起始网址将从 MySql table 生成)。 对此类解决方案或其他选项有何评论?
我目前的设置如下。
def __init__(self, startUrls, *args, **kwargs):
self.keywords = ['sales','advertise','contact','about','policy','terms','feedback','support','faq']
self.startUrls = startUrls
self.startUrls = json.loads(self.startUrls)
super(MySpider, self).__init__(*args, **kwargs)
def start_requests(self):
for url in self.startUrls:
yield Request(url=url)
您可以将参数传递给 scrapy spider 并在您的 spider 中读取它们。
发送编码为 JSON 的 URL 列表,然后对其进行解码,现在触发请求。
class MySpider(scrapy.Spider):
def __init__(self, startUrls, *args, **kwargs):
self.startUrls = startUrls
self.startUrls = json.loads(self.startUrls)
super(MySpider, self).__init__(*args, **kwargs)
def start_requests(self):
for url in self.startUrls:
yield Request(url=url ... )
这里是你如何运行将这个参数发送给你的蜘蛛。
curl -u APIKEY: https://app.scrapinghub.com/api/run.json -d project=PROJECT -d spider=SPIDER -d startUrls="JSON_ARRAY_OF_LINKS_HERE"
你的 scrapinghub.yml
文件应该是这样的
projects:
default: 160868