刮屑反面C

2024-06-28 19:40:01 发布

您现在位置:Python中文网/ 问答频道 /正文

蜘蛛从一个页面上抓取一些特定的链接。然后,它会在每个页面中搜索youtube链接和一个名称来标识它(页面标题)。它确实找到了我需要的所有链接,但顺序是奇怪的。在

spider从下到上收集所有页面信息。我怎么才能让它从上到下呢?在

我的蜘蛛:http://pastebin.com/5qLKr6ky

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

起始页:它在蜘蛛中(我不能发布超过2个链接,因为我是一个新用户)

我希望输出的顺序与起始页相同。在


Tags: 名称com信息http标题顺序youtube链接
3条回答

哦,你的意思是你需要得到的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"]
        ...

如果你的下一个页面包含链接的视频源,请查看下一个链接。这些链接的形式如下:

<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来过滤这些其他链接。在

我不知道scrapy,但我知道在python中,只要调用^{},就可以反转list或其他iterable。在

相关问题 更多 >