python - AttributeError:“SelectorList”对象没有“替换”属性
问题描述
我正在尝试运行一个 Scrapy 蜘蛛并将其全部转储到一个 json 文件中。这是我的代码:
import scrapy
import re
class MissleItem(scrapy.Item):
missle_name = scrapy.Field()
missle_type = scrapy.Field()
missle_origin = scrapy.Field()
missle_range = scrapy.Field()
missle_comments = scrapy.Field()
class missleSpider(scrapy.Spider):
name = 'missle_list'
allowed_domains = ['en.wikipedia.org']
start_urls = ['https://en.wikipedia.org/wiki/...']
def parse(self, response):
table = response.xpath('///div/table[2]/tbody')
rows = table.xpath('//tr')
row = rows[2]
row.xpath('td//text()')[0].extract()
for row in response.xpath('// \
[@class="wikitable"]//tbody//tr'):
name = {
'Missle' : row.xpath('td[1]//text()').extract_first(),
'Type': row.xpath('td[2]//text()').extract_first(),
'Origin' :
row.xpath('td[3]/a//text()').extract_first(),
'Range':
row.xpath('td[4]//text()').replace(u'\ ', u'
').extract_first(),
'Comments' :
row.xpath('td[5]//text()').extract_first()}
yield MissleItem(missle_name=name['Missle'],
missle_type=name['Type'],
missle_origin=name['Origin'],
missle_range=name['Range'],
missle_comments=name['Comments'])
当我运行前面的代码时,我得到: AttributeError: 'SelectorList' object has no attribute 'replace'
我的问题是,如何在没有“nbsp;”的情况下返回我的范围列 额外输出?我试过了:
'Range': row.xpath('td[4]//text()').strip().extract_first()
但后来我得到了一个:
AttributeError: 'SelectorList' object has no attribute 'strip'
任何帮助将不胜感激
解决方案
row.xpath('td[4]//text()').replace(u'\ ', u'').extract_first(),
尝试把extract_first()
替换前的属性
推荐阅读
- jenkins - 种子作业无法解析构建用户 vars 插件
- python - 如何格式化从函数接收到的控制台输出?我想在每个 '<' 字符后添加一个换行符
- c - 为什么我的程序突然弹出而没有任何错误?
- c# - 我可以明确关闭 RestSharp 连接吗?
- java - Kotlin 不允许 charAt
- nginx - nginx中lister [::]:80的含义
- java - 在光标进入对象之前按下鼠标时,如何检测光标何时悬停在对象上?
- jenkins - 根据选择的带参数的管道构建并行运行多个 jmeter 脚本
- dart - 我们如何在 dart 中创建不可扩展的类
- javascript - 如何在 Mapbox 中将地图限制为地理区域?