0

スパイダーは、1 つのページからいくつかの特定のリンクをクロールします。次に、それらのページのそれぞれで、YouTube リンクとそれを識別する名前 (ページ タイトル) を検索します。必要なすべてのリンクが見つかりますが、順序は奇妙です。

スパイダーは、すべてのページ情報を下から上に収集します。どうしたら上から下に移動できますか?

私のスパイダー: http://pastebin.com/5qLKr6ky

出力: http://pastebin.com/j4h4aRMs

開始ページ: スパイダーにあります (新規ユーザーのため、2 つ以上のリンクを投稿できません)

出力を開始ページと同じ順序にしたい。

4

3 に答える 3

0

ああ、スタート ページに配置された順に Youtube リンクが必要ということですか?

Scrapy は並行してリクエストを行うため、リンクの順序はランダムです

class ProfessormesserSpider(BaseSpider):

    allowed_domains = ['www.professormesser.com']
    start_urls = ['http://www.professormesser.com/n10-005/free-network-plus/']

    def parse(self, response):
        # extract urls from start page and REMEMBER THEIR ORDER(!!!)
        hxs = HtmlXPathSelector(response)
        for i, link in enumerate(hxs.xpath("//td[@valign='center']/div/descendant::a/@href")):
            # "i" is the link's order
            yield yield Request(url=link, callback=self.parse_item, meta={'i': i})

    def parse_item(self, request):
        order = response.request.meta["i"]
        ...
于 2012-12-30T21:39:49.340 に答える
0

リンクされたページのいずれかのページ ソースを見ると、前後のビデオへのリンクが含まれています。これらのリンクは次の形式です。

<div class="entry clearfix">
...
<b>Next:</b> The TCP/IP Model  &gt;&gt;</a><br />
<center><iframe width="640" height="360" src="http://www.youtube.com/embed/lSK1d8fZyEw?rel=0" frameborder="0" allowfullscreen></iframe></center></p>
</div>

その結果、重複したエントリを取得しています (リンクは異なりますが)。これらの他のリンクを除外する、より明示的な xpath を作成する必要がある場合があります。

于 2012-12-30T22:14:04.923 に答える
0

私はスクレイピーを知りませんが、reversed.

于 2012-12-30T19:56:26.470 に答える