1

Webサイトからいくつかのデータをクロールするスパイダーを作成する必要があります。データの一部は外部URLです。

ルートサイトからデータをクロールするスパイダーを既に作成しました。次に、外部Webページ用のスパイダーを作成します。

SgmlLinkExtractorを使用して各外部Webページの特定のリンクをたどるクロールスパイダーを作成することを考えていました。

start_urlのリストを2番目のスパイダーに伝達するための推奨される方法は何ですか?

私のアイデアは、アイテムのjsonファイルを生成し、2番目のスパイダーのstart_requestsの属性を読み取ることです。

4

2 に答える 2

2

ルートサイトからデータをクロールするスパイダーを既に作成しました。次に、外部Webページ用のスパイダーを作成します。

これらの外部ページのURLをデータベースに保存します。

start_urlのリストを2番目のスパイダーに伝達するための推奨される方法は何ですか?

BaseSpider.start_requests他のスパイダーをオーバーライドし、データベースから取得したURLからリクエストを作成します。

于 2012-07-19T18:27:58.677 に答える
0

質問はかなり曖昧ですが、ここに1つの方法があります(??)

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={}属性もあります。

于 2012-07-19T18:54:30.033 に答える