鱼C论坛

 找回密码
 立即注册
查看: 2081|回复: 13

[已解决]爬网页的数据报错,麻烦各位指导下

[复制链接]
发表于 2018-6-30 15:31:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
爬网页的数据报错,麻烦各位指导下

爬取的网页是:https://v.taobao.com/v/content/l ... XM&catetype=704

只想爬下淘女郎的ID和对应的照片就可以了


已经根据网络工具查看到,在这个URL(get而非post不需要data内容)返回的json文件里面,但是urlopen之后read以后提示是这样的:
jsonp74({"status":1022,"data":{"error":"非法请求"},"server":"matrixmission010150160134.eu13","msg":"当前账号没有对应操作的权限,请检查是否开通了需求方账号."});
人初学,希望各位大大指导下

代码:
import urllib.request
import re
import random
import urllib.parse
import json
import requests

def getInfo(url):
    req = urllib.request.Request(url)
    req.add_header = ('user-agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36')
    response = urllib.request.urlopen(req)

    html = response.read().decode('utf-8')

    print(html)

运行结果:
url = 'https://v.taobao.com/micromission/req/selectCreatorV3.do?cateType=704&_ksTS=1530343128779_73&callback=jsonp74&&_output_charset=UTF-8&_input_charset=UTF-8'
>>> getInfo(url)






jsonp74({"status":1022,"data":{"error":"非法请求"},"server":"matrixmission010150160134.eu13","msg":"当前账号没有对应操作的权限,请检查是否开通了需求方账号."});
>>>
最佳答案
2018-7-1 10:44:43
2018-07-01_10-43-58.png
我试过了可以啊
1.png
2.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-6-30 17:18:41 | 显示全部楼层
可以看到,网站已经识别出你是爬虫了。
百分之八十的可能是这个请求需要加cookie
剩下百分之十是你的网页头不正确。
最后百分之十是你输入的参数是js计算出来的,是随机值。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-30 19:11:14 | 显示全部楼层
header里加个referer试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-30 22:10:30 | 显示全部楼层
朋友,试试selenium,即时你用re.request采集到了网页,返回的网页和你用“检查”看到的网页不一样,因为返回的网页没有加载js的不完整版,“检查”看到的网页是加载了js文件的完整版,selenium可直接看到完整版,对淘宝尤其好用。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-1 01:05:22 | 显示全部楼层
chakyam 发表于 2018-6-30 19:11
header里加个referer试试

还是不行,我试下4L的方法吧,多谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-1 01:07:39 | 显示全部楼层
黄金猫 发表于 2018-6-30 22:10
朋友,试试selenium,即时你用re.request采集到了网页,返回的网页和你用“检查”看到的网页不一样,因为返 ...

好的,我试下这个模块
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-1 01:08:29 | 显示全部楼层
simplerjiang 发表于 2018-6-30 17:18
可以看到,网站已经识别出你是爬虫了。
百分之八十的可能是这个请求需要加cookie
剩下百分之十是你的网页 ...

多谢,我试试别的方法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-1 10:44:43 | 显示全部楼层    本楼为最佳答案   
2018-07-01_10-43-58.png
我试过了可以啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-1 22:25:15 | 显示全部楼层
chakyam 发表于 2018-7-1 10:44
我试过了可以啊

多谢哈,估计是我哪里敲错了吧,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-1 22:32:53 | 显示全部楼层
chakyam 发表于 2018-7-1 10:44
我试过了可以啊

你好,请教下requests.get()和urllib.request.urlopen的区别是什么,多谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-1 22:42:38 | 显示全部楼层
花生豆豆 发表于 2018-7-1 22:32
你好,请教下requests.get()和urllib.request.urlopen的区别是什么,多谢

模块不同,urllib现在没怎么用过了,不清楚
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-1 23:04:25 | 显示全部楼层
chakyam 发表于 2018-7-1 22:42
模块不同,urllib现在没怎么用过了,不清楚

感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-15 13:48:52 | 显示全部楼层
参数给个refer 直接通过。 亲测有效
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-7 21:07:42 | 显示全部楼层
不能直接访问那个网站,这是跨域请求,需要在头部加上原始的地址
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-23 03:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表