大家好,又见面了,我是你们的朋友全栈君。
爬虫遇到的问题:
这两天做爬虫遇到些问题,我在这里总结一下,希望能够和大家分享,共同学习,共同进步。
今天在我爬某个网站的时候,返回的结果是415,不支持的媒体类型(Unsupported media type),当时遇到这个问题的时候,我有点蒙,什么是媒体,在这里先不管他什么是媒体,反正就是报错,但是能肯定的是415错误肯定是请求的问题。那么我就开始顺着我的爬虫经验挨个排除。
1、我的IP有没有被封?
2、这个请求是post/get?
3、请求头是否正确?
4、参数都是否正确?
但凡要记住做爬虫要细心去研究请求过程。
1、IP绝对没有封,因为我用的是公司的代理,同时在我的浏览器上面可以访问,排除IP被封。
2、弄清楚这个请求是post/get请求,我确定了这个请求“http://cq.gsxt.gov.cn/gsxt/api/ebaseinfo/queryForm/“+pripid+”/1?currentpage=1&pagesize=5&t=”+System.currentTimeMillis();是get请求,排除post请求。
3、get请求和post请求在爬虫看来最大的差别就是,post请求参数都写在了请求地址的“?”后面,而get请求的参数要写在request请求类里面。问题到这我先把request.requestBody = null;这样get请求才不会受到之前做过post请求参数的干扰。把各种请求头信息都加上了(请求头不要写错了,千万不能带着问题区找问题),发现还是报Unsupported media type错误。这个时候我就开始怀疑我之前写的get请求是不是有多写请求信息的问题,才想到这个问题,这时候就看到我上一个get多写了几个请求信息,这里我要强调一下,由于不知道请求头信息那个是必要的,这时候做爬虫就要一个一个的去试,请求成功了之后一定要记得把之前写的多余的请求信息给去掉,不然会影响下面的请求(这个不是肯定,建议去掉多余的请求信息)。
4、参数是post特有的。
一个小小的问题困扰我了好久,工作效率就是这样慢慢积累起来的。关注我,我会经常更新关于爬虫时遇到的问题的。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135344.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...