我正在尝试抓取这些数据,但标题标题中遇到了一些问题。
ValueError:以10为底的int()无效文字:
我认为我理解问题所在,因为它找到的不是整数,看起来像是某种无法变成整数的空白。在尝试求和之前,我是否需要对数据进行一些其他清理?
class PsaSpider(scrapy.Spider):
name = 't3'
allowed_domains = ['psacard.com']
start_urls = ['https://www.psacard.com/Pop/GetItemTable?headingID=51453&categoryID=20003&isPSADNA=false&pf=0&_=1555080293549']
def parse(self, response):
def strip_second(sel, xpath):
try:
return sum([int(x.strip().replace(',', '')) for x in sel.xpath(xpath).extract() if u'-' not in x])
except ValueError:
pass
rows = response.css('table.pop-grid tbody tr')
for row in rows:
td = row.css('td')[0]
yield {
'name' : row.xpath('td[2]/strong//text()').extract_first(),
'auth': strip_second(row, 'td[4]//text()'),
'psa1': strip_second(row, 'td[5]//text()'),
'psa1.5': strip_second(row, 'td[6]//text()'),
'psa2': strip_second(row, 'td[7]//text()'),
'psa3': strip_second(row, 'td[8]//text()'),
'psa4': strip_second(row, 'td[9]//text()'),
'psa5': strip_second(row, 'td[10]//text()'),
'psa6': strip_second(row, 'td[11]//text()'),
'psa7': strip_second(row, 'td[12]//text()'),
'psa8': strip_second(row, 'td[13]//text()'),
'psa9': strip_second(row, 'td[14]//text()'),
'psa10': strip_second(row, 'td[15]//text()'),
}
答案 0 :(得分:1)
调试您从数据中得到的信息。至少使用以下方法剥离错误数据:
data = [x.strip().replace(',', '') for x in sel.xpath(xpath).extract() if u'-' not in x]
return sum([int(x) for x in data if x])