Python 在Scrapy中区分HTML和非HTML页面
我正在用Scrapy构建一个爬行器,它跟踪它能找到的所有链接,并将url发送到管道。目前,这是我的代码: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
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()
...
,靠近底部