鍍金池/ 問答/人工智能  數(shù)據分析&挖掘  Java  Python/ scrapy中parse調用另外一個parse報錯

scrapy中parse調用另外一個parse報錯

def parse(self, response):
        li_list = response.css("div.list_cont.Left_list_cont.Left_list_cont1 > div.tab_tj > div > div > ul > li")
        for li in li_list:
            item = CardItem()
            item['href'] = li.css("a::attr(href)").extract()
            item['title'] = li.css("a::attr(title)").extract()
            scrapy.Request(url=item['href'],
             callback=self.detail_parse, headers=self.headers) # 此行運行報錯
            yield item
            
def detail_parse(self, response):
        print("ok")
        pass

錯誤信息為:

Traceback (most recent call last):
  File "d:\softs\python\python36-32\lib\site-packages\scrapy\utils\defer.py", line 102, in iter_errback
    yield next(it)
  File "d:\softs\python\python36-32\lib\site-packages\scrapy\spidermiddlewares\offsite.py", line 30, in process_spider_output
    for x in result:
  File "d:\softs\python\python36-32\lib\site-packages\scrapy\spidermiddlewares\referer.py", line 339, in <genexpr>
    return (_set_referer(r) for r in result or ())
  File "d:\softs\python\python36-32\lib\site-packages\scrapy\spidermiddlewares\urllength.py", line 37, in <genexpr>
    return (r for r in result or () if _filter(r))
  File "d:\softs\python\python36-32\lib\site-packages\scrapy\spidermiddlewares\depth.py", line 58, in <genexpr>
    return (r for r in result or () if _filter(r))
  File "E:\Project\python\win4000-images-crawler\tutorial\spiders\run_spider.py", line 27, in parse
    yield scrapy.Request(url=item['href'], callback=self.detail_parse, headers=self.headers)
  File "d:\softs\python\python36-32\lib\site-packages\scrapy\http\request\__init__.py", line 25, in __init__
    self._set_url(url)
  File "d:\softs\python\python36-32\lib\site-packages\scrapy\http\request\__init__.py", line 56, in _set_url
    raise TypeError('Request url must be str or unicode, got %s:' % type(url).__name__)
TypeError: Request url must be str or unicode, got list:
回答
編輯回答
擱淺

已解決

 def parse(self, response):
        li_list = response.css("div.list_cont.Left_list_cont.Left_list_cont1 > div.tab_tj > div > div > ul > li")
        url_list = []
        for li in li_list:
            item = CardItem()
            href = li.css("a::attr(href)").extract_first()
            item['href'] = href
            item['title'] = li.css("a::attr(title)").extract_first()
            url_list.append(href)
            yield item
        for i in url_list:
            print("->>> %s" % i)
            yield scrapy.Request(url=i, callback=self.detail_parse, headers=self.headers)
2018年8月13日 00:19