Scrapy(python)TypeError:不可损坏类型:“list”

2024-10-03 17:18:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的代码。但是,当我使用response.urljoin(port_homepage_url)这部分代码时,会出现这个错误。在

import re

import scrapy
from vesseltracker.items import VesseltrackerItem


class GetVessel(scrapy.Spider):
    name = "getvessel"
    allowed_domains = ["marinetraffic.com"]
    start_urls = [
        'http://www.marinetraffic.com/en/ais/index/ports/all/flag:AE',
    ]

def parse(self, response):
    item = VesseltrackerItem()
    for ports in response.xpath('//table/tr[position()>1]'):
        item['port_name'] = ports.xpath('td[2]/a/text()').extract()
        port_homepage_url = ports.xpath('td[7]/a/@href').extract()
        port_homepage_url = response.urljoin(port_homepage_url)
        yield scrapy.Request(port_homepage_url, callback=self.parse, meta={'item': item})

怎么了?在

这是错误日志。在

^{pr2}$

Tags: 代码nameimporturlportresponse错误ports
1条回答
网友
1楼 · 发布于 2024-10-03 17:18:44

ports.xpath('td[7]/a/@href').extract()返回一个列表,当您试图对其执行“urljoin”操作时,它将失败。使用extract_first()代替:

port_homepage_url = ports.xpath('td[7]/a/@href').extract_first()

相关问题 更多 >