需要带的数据为 data = {"a": [{"b": 'c'}]} 我用的这种写法一直不对, return scrapy.FormRequest( body=json.dumps(data), )
1 butterfly1211 2019-02-11 15:14:52 +08:00 不需要 json.loads 直接传字典试试 |
![]() | 2 mapnaqi OP 试过, 不行, formdata 传字典, 或者 body 传 json 都是 状态码 408 的错误 |
3 butterfly1211 2019-02-11 15:22:11 +08:00 可以试着传一下抓包 body 的截图,如果是"?1=2&3=4"这种的话需要可能需要换个思路 |
![]() | 4 mapnaqi OP @butterfly1211 数据长这个样子, b 是一个编码, 是数字和英文的 data = {"lineItems": [{"catalogNumber": b}]} 用 requests 写没问题, 用了 scrapy 就是 408, |
5 butterfly1211 2019-02-11 15:30:09 +08:00 试一下,request = scrapy.Request( url, method='POST', body=json.dumps(my_data),)方式 |
![]() | 6 airect 2019-02-11 15:33:27 +08:00 ![]() body 里是 json 字符串,headers 中加 Content-Type: application/json |
![]() | 7 mapnaqi OP @butterfly1211 还是不行 |
![]() | 8 mapnaqi OP 408 Request Time-out |
9 butterfly1211 2019-02-11 15:46:14 +08:00 ![]() FormRequest 中 {‘ key': ‘ value', ‘ k': ‘ v'}会被转化为'key=value&k=v' 并且默认的 method 是 POST,你可以再看一下 body 的原始格式,看是这种 key-value 的形式还是 json 格式在作分析 |
![]() | 11 encro 2019-02-12 12:31:51 +08:00 抓包,或者写一个测试用例接受请求过来的 body 和 head,比较有什么不同,实在不行用 request 替代好了。最新的 request-html 已经自带 html 解析,满足大部分爬虫场景。 |
![]() | 12 luoleng 2019-02-15 00:26:12 +08:00 formdata=data |