Scrapy不解析特定请求

时间:2017-02-27 13:31:06

标签: python scrapy web-crawler

我正在编写一个scrapy应用程序,它抓取网站主页,保存他的网址,并检查他的菜单项,因此它将递归地执行相同的过程。

class NeatSpider(scrapy.Spider):
name = "example"
start_urls = ['https://example.com/main/']

def parse(self, response):

  url = response.url
  yield url

  # check for in-menu article links
  menu_items = response.css(MENU_BAR_LINK_ITEM).extract()
  if menu_items is not None:
    for menu_item in menu_items:
      yield scrapy.Request(response.urljoin(menu_item), callback=self.parse)

在示例网站中,每个菜单项都会指向另一个带有其他菜单项的页面。

有些网页的回复会转到“解析”方法,因此他们的网址会被保存,而有些则不会。 那些不是,给予200状态(当我在浏览器中手动输入他们的地址时),不抛出任何异常,并且几乎显示与其他页面相同的行为,他们确实得到了解析方法。 /强>

添加信息:所有菜单项都到达代码的最后一行(没有任何错误),如果我提供'errback'回调方法,则没有任何请求到达那里。

编辑:此处为日志:http://pastebin.com/2j5HMkqN

1 个答案:

答案 0 :(得分:0)

您可能正在抓取显示Captchas的网站。

您可以像这样调试您的刮刀,这将在您的操作系统默认浏览器中打开已删除的网页。

from scrapy.utils.response import open_in_browser

def parse_details(self, response):
    if "item name" not in response.body:
        open_in_browser(response)