- 在上篇博客中总结了scrapy+selenium实战,但是那样在抓取大量数据时效率很慢,所以准备采取调用API的办法进行抓取,本篇博客记录scrapy调用API抓取信息实战。
- 如何找到相关数据API:在想要抓取数据的当前网页打开网页抓包工具,选择 network——>XHR后点开每个XHR选择preview查看有没有想要的数据,如果有想要的数据就点击Headers查看API,那么这个网址就是我们想要的API,注意复制时?后面的不用复制,API为https://www.zkh.com/servezkhApi/search/1/product,在页面中我们也可以看到请求头Headers的相关参数等信息,大多数情况我们构造请求头时只用到content-type就可以,content-length加了可能还会报错(<twisted.python.failure.Failure twisted.internet.error.ConnectionLost: Connection to the other side was lost in a non-clean fashion: Connection lost.>)
另外请求需要的参数可以在Payload查看,复制其中的Request Payload并通过json.dumps(payload)构造发送请求时需要的参数,并修改其中参数的值就可以请求到想要的数据,参数错误时会出现返回数据为空的情况。
-
- 请求的结果需要用 json.loads(response.text)转换成json格式的数据
- 学会了基于API的爬虫后简直像打开了新世界的大门,基本上最难的地方就是找API,构造Paylod参数时也要注意不要弄错,同时在这里介绍一个极其好用的模拟发送请求的工具postman,当不确定自己的API能不能用就用这个进行测试,如果测试没问题但是在scrapy中出现问题那就是程序的问题了,可能是paylod写错了,多了逗号、空格啥的。