Scrapy从CSV读取URL循环爬取报AttributeError错误如何解决
问题根因
报错触发原因是df['link'].values返回的是numpy.ndarray类型对象,该类型不存在to_list()方法:
- pandas的Series(即
df['link']本身)提供带下划线的to_list()方法转换列表 - numpy数组仅提供全小写无下划线的
tolist()方法转换列表
你混淆了两类对象的API写法导致属性报错。
修复方案
两种可选修复方式,推荐使用第一种:
- 方案1:直接调用Series的原生方法(无需操作numpy数组,代码最简洁)
将报错行替换为:urlList = df['link'].to_list() - 方案2:使用numpy数组对应的转换API
将报错行替换为:urlList = df['link'].values.tolist()
其他代码优化建议
你的代码还存在几处可调整的问题:
- 已经通过
from scrapy import Request导入了请求类,后续yield时可以直接写Request(url=i, callback=self.parse),无需加scrapy.前缀 - 导入的
from scrapy.http import request没有被使用,可以直接删除避免冗余 - 当前代码缺少
parse方法实现,修复完属性报错后会触发新的报错,需要补充页面解析逻辑
完整修正后的参考代码
import scrapy import pandas as pd from scrapy import Request class PagedataSpider(scrapy.Spider): name = 'pagedata' allowed_domains = ['www.imdb.com'] def start_requests(self): df = pd.read_csv('list1.csv') urlList = df['link'].to_list() for url in urlList: yield Request(url=url, callback=self.parse) def parse(self, response): # 此处补充你的页面数据提取逻辑 pass
内容的提问来源于stack exchange,提问作者Vivek Kumar
相关产品推荐
相关产品推荐

