我得到了一个不能用于从下一页获取数据的url,所以创建了一个base_url = 'http://www.marinetraffic.com'
变量并将其传递给了scrapy请求。port_homepage_url = base_url + port_homepage_url
。当我看到这样的结果时,效果很好。yield {'a': port_homepage_url, 'b':item['port_name']}
我得到了我想要的结果。在
但是如果把它放在垃圾请求yield scrapy.Request(port_homepage_url, callback=self.parse, meta={'item': item})
我会得到错误
port_homepage_url = base_url + port_homepage_url
TypeError: cannot concatenate 'str' and 'NoneType' objects
这是密码
^{pr2}$
这个问题不会发生在初始的起始URL页面上,而是在后续请求被处理之后发生。以this page为例。第7个},这会导致
td
元素中没有链接,因此,ports.xpath('td[7]/a/@href').extract_first()
返回{port_homepage_url = base_url + port_homepage_url
行出现故障。在如何解决这个问题取决于你打算在“端口”页面上做什么。据我所知,您并不是要用
self.parse
来实际处理“port”页请求,并且需要在内部使用不同逻辑的单独回调。在相关问题 更多 >
编程相关推荐