为了账号安全,请及时绑定邮箱和手机立即绑定

类型错误:不能混合 str 和非 str 参数

类型错误:不能混合 str 和非 str 参数

MMMHUHU 2023-04-25 17:17:34
from scrapy import Spiderfrom scrapy.http import Requestclass CourseSpider(Spider):    name = 'course'    allowed_domains = ['coursera.org']    start_urls = ['https://coursera.org/about/partners']    def parse(self, response):        listings = response.xpath('//div[@class="rc-PartnerBox vertical-box"]')        for listing in listings:            title = listing.xpath('.//div[@class="partner-box-wrapper card-one-clicker flex-1"]/p').extract_first()            relative_url = listing.xpath('.//a/@href').extract_first()            absolute_url = response.urljoin(relative_url)            yield Request(response.urljoin(relative_url), callback = self.parse_listing,meta={'title':title,'absolute_url':absolute_url})    def parse_listing(self,response):        titles = response.meta.get('title')        absolute_url = response.meta.get('absolute_url')        titles_course =  response.xpath('//div[@class="name headline-1-text"]/text()').extract()        url_link = response.xpath('//div[@class="rc-Course"]/a/@href').extract()        abs_url = response.urljoin(url_link)        yield {'title':title,        'titles':title,        'absolute_url':absolute_url,        'titles_course':titles_course,        'abs_url':abs_url}但是,在通过 cmd 运行脚本时。我收到错误。这些错误表明我不能混合 str 和非 str 参数,我对如何处理这个问题感到困惑。任何帮助,将不胜感激。我尝试添加 extract() 函数,因为它在列表容器上的一些先前的 stackoverflow 问题中被提及以消除该错误,但是我的 xpath 没有获得所需的输出。
查看完整描述

1 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

您正在寻找.extract_first()或它的新名称.get(),因为它.extract()会生成一个列表,不能在其中使用.urljoin



查看完整回答
反对 回复 2023-04-25
  • 1 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信