我是Scrappy的新手,我很难理解我从一个简单的地址中得到的响应。地址是https://fr.getaround.com/search.json?address=Gare de Bordeaux Saint-Jean,它给予了一个很长的JSON响应(〉130 k字符)。
这个json的想法是,然后刮取响应提供的汽车列表。
getaround api在其回答中是相当标准的,所以即使没有汽车,我仍然会收到带有空汽车列表的全局json结构。
当我尝试用Scrapy的时候,我得到了一个非常简短的回应:b'{"redirect_to":"/"}'
下面是我使用的代码
def start_requests(self):
addresses= ["Gare de Bordeaux Saint-Jean"]
for address in addresses:
yield scrapy.Request(
f"https://fr.getaround.com/search.json?address={address}"
)
def parse(self, response):
print("--------------------------------------------------------\nRESPONSE\n--------------------------------------------------------")
print(response)
print("--------------------------------------------------------\nBODY\n--------------------------------------------------------")
print(response.body)
我试了几样东西:
- 使用剧作家
它基本上将前面的response.body封装在一些html标记之间
- 使用shell
相同的响应。我试图强制该方法GET(request = request.replace(method="GET")
)或POST(method="POST"
)
- GET给出200代码,在POSTMAN中正确响应,200状态,仅主体为
b''
,外壳不牢固 - POST在POSTMAN和Scrapy中都给出了404代码
- 我试着在www.example.com上启用或不启用cookiesettings.py但没有成功。
- 我试着把主页(
fr.getaround.com
)从response.body中刮出来,看起来很好。
你知道我做错了什么吗?
编辑
Here我从POSTMAN得到的json响应/打开url
1条答案
按热度按时间g6ll5ycj1#
所以在Chrome / Postman中打开的请求和Scrapy所做的事情之间的区别是一个简单的cookie问题。在我的例子中,Postman添加了一些保存的cookie(可能来自初始查询),这使得getaround仍然可以根据生成cookie的请求为格式不正确的URL提供答案
因此,问题不是来自Scrapy,而是来自Postman中未丢弃的Cookie(发送按钮下的小“Cookie”链接),这让我相信我的GET请求是正确的。