我正在使用CrawlSpider从网页抓取和提取数据。
启动网址只有一个链接(这是一个直接链接),并且必须从该链接中删除数据(如果我使用BaseSpider并提供直接链接,则数据将被成功删除)。但是,当我运行CrawlSpider时,它会得到一些已经满足的301请求,并且控制权不会转到parse_item()进行抓取。
我有一个名为main_page.html的localhost页面,其中包含指向http://www.flipkart.com/office-supplies/pen/faber-castell/itmd4fpkgkd7e3fj?pid=pend4fpkyk2w9fd4&_l=U0SclLhlhi7jGPVIA8xWyA--&_r=tcVDd6I7AkBG9cR2hX21MA--&ref=5b471a78-5264-4e09-ba61-03f8965e10d0
的链接,我认为这是一个直接链接。在运行爬行蜘蛛时,我在scrapy看到以下输出 -
2011-12-05 15:54:34 + 0530 [flipkart_spider] DEBUG:Crawled(200)http://localhost/main_page.html> (引用者:无)
2011-12-05 15:54:35 + 0530 [flipkart_spider] DEBUG:重定向(301)到http://www.flipkart.com/office-supplies/pen/faber-castell/itmd4fpkgkd7e3fj?pid=pend4fpkyk2w9fd4&_l=U0SclLhlhi7jGPVIA8xWyA--& _r = tcVDd6I7AkBG9cR2hX21MA - &安培; REF = 5b471a78-5264-4e09-ba61-03f8965e10d0> 来自http://www.flipkart.com/office-supplies/pen/faber-castell/itmd4fpkgkd7e3fj?_l=U0SclLhlhi7jGPVIA8xWyA--&_r=tcVDd6I7AkBG9cR2hX21MA--&pid=pend4fpkyk2w9fd4&ref=5b471a78-5264-4e09-ba61 -03f8965e10d0>
我在parse_item()
中有一个未被调用的打印语句。这有什么不对?
答案 0 :(得分:2)
我认为您应该删除网址中?
之后的所有内容,以便它变为:http://www.flipkart.com/office-supplies/pen/faber-castell/itmd4fpkgkd7e3fj
更新
在大多数情况下,查询字符串中的属性仅用于不影响内容的内容,例如:您来自哪个页面,哪个菜单项处于活动状态,会话ID。如果您将网址中的网址复制到抓取工具中,则网址中的某些参数可能与您的用户代理有关,并且在使用其他代理打开相同的网址时会产生不可预测的结果。
如果您知道哪些参数可以安全地从网址中删除,您还可以从大量重复页面中保存自己。通常你可以访问不同类别的相同项目,但每次项目的网址都不同,因为参数ref=
我认为会告诉您来自哪个页面的信息。