爬虫通过URL请求403错误

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haoyuexihuai/article/details/81713074

之前获取网站数据,本来是已经完成了,今天一试发现包403了。整理了一天

先说主要代码

import urllib.request

# Cookie = "rxVisitor=15186102248518I5BJAVPSPA24S0U5I8RB59VE82158HN; CmLocation=100|100; CmProvid=bj; WT_FPC=id=2a5a17bd31f889e7e761499577321364:lv=1528894831117:ss=1528894326945; saplb_*=(J2EE204290020)204290050"

url = "########"

headers = {
    'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36',
    # 'Cookie': Cookie,
    'Connection': 'keep-alive',
    'Accept': '*/*',
    # 'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Host': '######',
    'Referer': '#########'
}

data={"page.currentPage":"2","page.perPageSize":"20"}
data = urllib.parse.urlencode(data) 
data = data.encode('utf-8')  
req = urllib.request.Request(url,headers=headers,data=data)
response = urllib.request.urlopen(req)
the_page = response.read()
print(the_page.decode("utf8"))

问题1:

按照网上要求添加了headers,也传了参数,运行是还是403。

最后发现需要对data经行转码,编译

data = urllib.parse.urlencode(data) #首先对data进行转码,转化成str类型
data = data.encode(‘utf-8’) #post请求只支持byte类型,所以要进行再次编码

(参考:https://www.jianshu.com/p/8f423aca2d75

通过调试可以看到,网络请求是POST
这里写图片描述

post参数
这里写图片描述

问题1,白天一直没解决,于是想通过Selenium模拟浏览器方式解决,但是一直卡在翻页上面,初步判断是页面内ajax分页,需要重新加载页面元素
有一个By Actions方式

WebElement element = driver.findElement(By("element_path"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().perform();

(参考:https://blog.csdn.net/u013250416/article/details/61425207/),还没有实际尝试解决方案,但是使用Selenium需要考虑页面加载速度,页面需要sleep等,迫不得已才会使用这种方式。

问题2:

执行的时候结果报错:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x8b in position 1: invalid start byte

上网查询,是因为表头中有一条:
“’Accept-Encoding’: ‘gzip, deflate, br’”
意思就是gzip需要解压,浏览器可以完成,本地解析就不可以,所以直接注释掉。
(参考:https://blog.csdn.net/Hudeyu777/article/details/76023441

问题3:

网站不需要登陆,于是直接把Cookie也注释掉

(参考:https://blog.csdn.net/qq_30242609/article/details/53788228 还没仔细看,为了解决问题1查的,作者写的认真,很有启发)

猜你喜欢

转载自blog.csdn.net/haoyuexihuai/article/details/81713074