三一王 发表于 2021-1-9 21:40:09

网页数据爬取问题

本帖最后由 三一王 于 2021-1-10 09:35 编辑

源代码如下:

import urllib.parse
import requests


def url_open(url):

    headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36'}



    url_1 = {"event_name": "submitUser", "unit": "day", "from_date": "2021-01-02", "to_date": "2021-01-08",
             "measure_type": "times", "rangeText": "过去 7 天", "sampling_factor": "64", "filter": {
            "conditions": [{"field": "event.submitUser.OperationType", "function": "equal", "params": ["注册"]},
                           {"field": "event.submitUser.status", "function": "equal", "params": ["成功", "true"]}],
            "relation": "and"}, "bookmarkid": "392", "slice_by_value": "2021-01-07", "slice_freq": "1",
             "slice_max_freq": "", "detail": "true", "tracker_type": "分布分析", "num_per_page": 50, "limit": 1000,
             "page": 0, "all_page": 'false',
             "profiles": ["user.userId", "user.enterpriseName", "user.enterpriseIdentifier"],
             "sort_by_field": "first_id", "asc": 'true', "use_cache": 'false'}

    data = dict(url_1)
    data = urllib.parse.urlencode(data).encode('utf-8')
    response = requests.post(url,headers = headers,data = data,auth=('******', '******'))
    html = response.text
    return html

url = 'https://sensors-web.vandream.com/api/addictions/user/list'


print(url_open(url))

报错如下:
{"error":"没有访问权限,请检查 project 和 token"}



请问project和token在哪里,如何修改啊{:5_94:}

另外,这个网站登录验证的时候用的是request payload,而且还不是常见的json格式。想要从头模拟下登录也不行

°蓝鲤歌蓝 发表于 2021-1-9 23:19:14

这个网站需要先登陆的,你都没有登陆,怎么访问别人的数据啊。

三一王 发表于 2021-1-10 08:51:34

°蓝鲤歌蓝 发表于 2021-1-9 23:19
这个网站需要先登陆的,你都没有登陆,怎么访问别人的数据啊。

response = requests.post(url,headers = headers,data = data,auth=('******', '******'))

我在post的时候加上了用户名和密码的。

suchocolate 发表于 2021-1-10 09:32:30

需要用浏览器跟踪一下登陆过程,方便提供一套账号和密码吗?

°蓝鲤歌蓝 发表于 2021-1-10 11:08:55

三一王 发表于 2021-1-10 08:51
我在post的时候加上了用户名和密码的。

那你 post要先携带账户密码 访问 登陆网址,才有权限访问该网站的其他网址。
你这个 url 都不是 登陆网址, 你直接携带 账户名和密码 去访问,哪有这样的。

Stubborn 发表于 2021-1-11 22:27:56

本帖最后由 Stubborn 于 2021-1-11 22:32 编辑

import json
import request
data = dict()
response = requests.post(url=url, data=json.dumps(data), headers=headers)

如果不行,请检查提交的数据是否是加密的,寻找加密的js函数

参考链接 POST中如何使用Requests Payload的表单提交

kaohsing 发表于 2021-1-12 18:49:43

json={}里面是密码用户名键值对
页: [1]
查看完整版本: 网页数据爬取问题