我搜索了很多主题,但似乎找不到我特定问题的答案。
我已经为网站创建了抓取工具,它可以完美运行。然后,我做了一个类似的爬网类似的网站,但是这次我有一个小问题。深入业务:
我的起始网址如下:www.example.com。该页面包含我要应用Spider的链接,如下所示:
...
我现在有一个问题:
每当我输入起始网址时,它都会自动重定向到www.example.com/locationA,并且使我的Spider正常工作的所有链接都包括
...
所以我的问题是如何将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)重定向到(引荐来源:无)
从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),
)