Python 在Scrapy中区分HTML和非HTML页面

Python 在Scrapy中区分HTML和非HTML页面,python,html,web-crawler,scrapy,scrapy-spider,Python,Html,Web Crawler,Scrapy,Scrapy Spider,我正在用Scrapy构建一个爬行器,它跟踪它能找到的所有链接,并将url发送到管道。目前,这是我的代码: from scrapy import Spider from scrapy.http import Request from scrapy.http import TextResponse from scrapy.selector import Selector from scrapyTest.items import TestItem import urlparse class Tes

我正在用Scrapy构建一个爬行器,它跟踪它能找到的所有链接,并将url发送到管道。目前,这是我的代码:

from scrapy import Spider
from scrapy.http import Request
from scrapy.http import TextResponse
from scrapy.selector import Selector
from scrapyTest.items import TestItem
import urlparse


class TestSpider(Spider):
name = 'TestSpider'
allowed_domains = ['pyzaist.com']
start_urls = ['http://pyzaist.com/drone']

def parse(self, response):
    item = TestItem()
    item["url"] = response.url
    yield item

    links = response.xpath("//a/@href").extract()
    for link in links:
        yield Request(urlparse.urljoin(response.url, link))
这可以完成任务,但只要响应只是响应,而不是TextResponse或HtmlResponse,就会抛出错误。这是因为没有响应。xpath()。我尝试通过以下方式对此进行测试:

if type(response) is TextResponse:
    links = response.xpath("//a@href").extract()
    ...

但是没有用。当我这样做时,它永远不会进入if语句。我是Python新手,所以它可能是一种语言。谢谢你的帮助。

别担心,我找到了答案<代码>类型()仅提供有关立即类型的信息。它与继承无关。我正在寻找
isinstance()
。此代码适用于:

if isinstance(response, TextResponse):
    links = response.xpath("//a/@href").extract()
    ...
,靠近底部