python - SCAPY:无法使用 FormRequest.from_response() __scrape__ 页面
问题描述
import scrapy
class TestSpider(scrapy.Spider):
name = 'test'
start_urls = ['https://www.icsi.in/student/Members/MemberSearch.aspx']
def parse(self, response):
return scrapy.FormRequest.from_response(
response,
formdata={'dnn_ctr410_MemberSearch_txtMembershipNumber': '61915'},
callback=self.after_login
)
def after_login(self, response):
print(response)
return response
由于表单有多个字段正在填充与会话相关的数据,因此我使用 from_response 并使用输入的 id 仅针对会员编号添加值。
但是这不起作用,我收到一条错误消息Spider must return request, item, or None, got 'HtmlResponse'
解决方案
after_login
您必须从方法返回正确的类型。异常消息中提到的类型列表。所以你的 after_login 方法应该是这样的:
def after_login(self, response):
print(response)
# response.css('') find something using CSS selector
# response.xpath('') or using xpath
yield {'some_field_name': 'field value'}
在您的示例中,您返回response
了具有HtmlResponse
类型,但scrapy期望其他类型,例如request, item, or None
推荐阅读
- node.js - 奇怪的 Node.js 性能
- amazon-dynamodb - 有没有办法将表数据从 DynamoDB 同步到 Redshift?
- ios - 在 Swift 语言中有什么方法可以将编译的类发布到已发布的程序中?
- javascript - 单击 div 框时不播放音频
- ios - BLE - iOS 吞下的最后一个数据包?
- jquery - 我怎样才能显示可变宽度的幻灯片而不用光滑的切割它们?
- c - 确定 SDL_CreateTexture() 的正确像素格式?
- mysql - MySQL INSERT for POST 方法的正文不正确
- javascript - 无法在 Chrome 开发工具控制台中查询模式对话框的元素
- angular - 通过服务传递数据时出现角度错误