我需要创建一个从网站抓取一些数据的蜘蛛。 部分数据是外部URL。
我已经创建了从根网站抓取数据的蜘蛛,现在我想为外部网页编写蜘蛛。
我正在考虑创建一个使用SgmlLinkExtractor跟踪每个外部网页中某些特定链接的crawlspider。
将start_url列表传递给第二个蜘蛛的推荐方法是什么?
我的想法是为这些项生成一个json文件,并在第二个蜘蛛的start_requests中读取该属性。
答案 0 :(得分:1)
我已经创建了从根网站抓取数据的蜘蛛 现在我想为外部网页编写蜘蛛。
将这些外部网页网址保存到数据库。
将start_url列表传递给第二个蜘蛛的推荐方法是什么?
覆盖您的其他蜘蛛中的BaseSpider.start_requests
,并从您从数据库获取的网址创建请求。
答案 1 :(得分:0)
这个问题很模糊,但这是一种方式(??)
class PracticeSpider(BaseSpider):
name = "project_name"
allowed_domains = ["my_domain.org"]
def start_requests(self):
start_urls = "The First Page URL"
return [Request(start_urls, callback=self.parse)]
def parse(self, response):
# parse the first page
yield self.pageParser(response)
# grab the external URLs you want to follow
ext_urls = ...
for url in ext_urls:
yield Request(url, callback=self.pageParser)
def pageParser(self, response):
# parse the page
return items
Request中还有一个 meta = {} 属性,可能会有所帮助。