python爬数据,天气预报 返回403

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

爬数据的时候,一般网站获取数据访问的动态js文件是可以直接访问的,用普通

request = urllib.request.urlopen(url)
res = request.read()

就可以获取

而有的不能直接获取,返回403报错,意思是访问不到,

而这种明明有数据,服务器就是不给你返回数据的链接,可以使用加headers的方式,模拟网页环境


headers = {
	'Accept': '*/*',
	# 不要采用 gzip(压缩格式),数据会变乱码
	# 'Accept-Encoding': 'gzip, deflate',
	'Accept-Encoding': 'deflate',
	'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
	'Connection': 'keep-alive',
	'Host': 'd1.weather.com.cn',
	'Referer': 'http://www.weather.com.cn/weather40d/101110101.shtml',
	'User-Agent': 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1'
}

这里访问的是中国天气网的数据,

url=‘http://d1.weather.com.cn/calendar_new/2018/101110101_201806.html?_=1544002167834’

需要匹配的参数是headers中的Host和Referer

之后使用 

req = urllib.request.Request(url=url,data=None,headers=headers)
request = urllib.request.urlopen(url)
res = request.read()

就可以访问了

当然,在访问普通的url(无403错误)时,也可以加herders

猜你喜欢

转载自blog.csdn.net/qq983392709/article/details/84846612
今日推荐