我搜索了很多主题,但似乎找不到我特定问题的答案。
我已经为网站创建了抓取工具,它可以完美运行。然后,我做了一个类似的爬网类似的网站,但是这次我有一个小问题。深入业务:

我的起始网址如下:www.example.com。该页面包含我要应用Spider的链接,如下所示:

  • www.example.com/location一个
  • www.example.com/locationB
  • www.example.com/locationC

  • ...

    我现在有一个问题:
    每当我输入起始网址时,它都会自动重定向到www.example.com/locationA,并且使我的Spider正常工作的所有链接都包括
  • www.example.com/locationB
  • www.example.com/locationC
    ...

  • 所以我的问题是如何将www.example.com/locationA包含在返回的URL中,我什至得到如下日志信息:

    -2011-11-28 21:25:33 + 1300 [example.com]调试:将(302)重定向到http://www.example.com/>

    -2011-11-28 21:25:34 + 1300 [example.com]调试:将(302)重定向到(引荐来源:无)
  • 2011-11-28 21:25:37 + 1300 [example.com]调试:将(302)重定向到(referer:www.example.com/locationB)

  • 从parse_item打印:www.example.com/locationB

    ....

    我认为该问题可能与某种方式(引用者:无)有关。任何人都可以对此有所了解吗?

    我通过将起始URL更改为www.example.com/locationB来缩小了此问题的范围。由于所有页面都包含所有位置的列表,所以这次我的蜘蛛工作在:

    -www.example.com/locationA

    -www.example.com/locationC
    ...

    简而言之,我正在寻找将与起始URL相同(或从中重定向)的url包含在parse_item回调将起作用的列表中的方法。

    最佳答案

    对于其他人也有同样的问题,经过大量搜索之后,您要做的就是将回调函数命名为parse_start_url

    例如:

    rules = (
            Rule(LinkExtractor(allow=(), restrict_xpaths=(
                '//*[contains(concat( " ", @class, " " ), concat( " ", "pagination-next", " " ))]//a',)), callback="parse_start_url", follow=True),
        )
    

    10-08 04:47