这个json的Preview
这是Headers的Request URL:
https://m.douban.com/rexxar/api/v2/subject_collection/movie_showing/items?os=ios&callback=jsonp1&start=0&count=8&loc_id=108288&_=1545019966859
然后我把url直接复制到浏览器访问结果如下:
;jsonp1({"msg": "invalid_request_1284", "code": 1287, "request": "GET /rexxar/v2/subject_collection/movie_showing/items", "localized_message": ""});
问题:为什么浏览器直接访问得到的结果,不同于json的原数据?
这个是跨域请求呀。数据类型是jsonp 呀,不是json。你这个数据响应后会调用jsonp1函数。
我是看教学视频,那老师直接把Headers的Request-Url复制到网址栏,就可以显示跟图片一样的内容。可是我就不可以。
看的是python爬虫,爬豆瓣的案例,用Nexus6p模拟浏览的。
@许小志: 看了一下那个地址,好像并不是跨域,你可以使用正则处理一下,去掉;jsonp1(),然后转字典。
@许小志: 直接通过 浏览器访问是get 请求呀。不是post 之类的请求。
@许小志: 豆瓣 这边关于请求,应该是做了处理了。只能指定的请求才能获取到数据
@xiaobaiskill: 可是他要用程序把字符爬出来,再用正则
@许小志: 什么意思?不懂哎!
@xiaobaiskill: 就是代码来读取那个url的内容,再用正则
@许小志: 爬虫都是这样的,通过URL获取全部数据,然后通过正则获取你想要的数据就可以了。我刚才又看了一下豆瓣的url又可以获取到数据了,但是重复刷了三次后就报错了,我想豆瓣为了防止爬虫获取它 的资源做了反爬虫处理。所有在请求的过程中有时有数据有时没有。你在爬取数据时最好是通过代理服务器爬取豆瓣的资源,同时再下一次获取时留有一定的间隔,否则豆瓣会认为是爬虫。
@xiaobaiskill: 我会显示400 Bad Request
@许小志: 豆瓣做了反爬虫处理,请求过多的话,会被认为是爬虫程序。
首先你要了解什么格式是json
还有啥是jsonp
不知道博主现在有没有解决这个问题,我也是这样的情况,想请教一下博主(这种苦恼很痛苦)
你是访问不到他的内容,还是爬不下来数据
– 老鼠蟒蛇 5年前