caolvchong-top / twitter_download

推特 图片 视频 爬虫;一键下载
330 stars 38 forks source link

关于api请求链接的问题 #11

Closed sherlR closed 9 months ago

sherlR commented 10 months ago

image 那个variables后面就是一连串的字典吗?打印出URL来看着怪怪的 因为我这样请求提示“获取信息失败”,response打印出来是空的,cookie也设置的正确的,所以在想是不是URL格式不对? 希望可以得到解答~

caolvchong-top commented 10 months ago

异步部分的代码貌似有点问题

sherlR commented 10 months ago

嗯...是运行失败的 1697017537755 1697018062718 1697017611644 这是我的运行截图 改成(20,40)也是无法获取信息,我打印出来 headers里是有那五个参数的,请问是我的cookie设置错误了吗 看上去也是该有引号的地方是有的,而且cookie里“auth_token,ct0”这些也是有的 可以问一下您的Python版本吗

caolvchong-top commented 10 months ago

我是 Python 3.11 的环境

获取信息失败大概率是cookie错误,如图: image

可以直接复制完整cookie填入settings(引号前加反斜杠),或是如 #10 中提到的,仅填写auth_token与ct0

sherlR commented 10 months ago

image 请问3.11这里不会报错吗,编译器跟运行都有报错,加上global也还是错 image 真的很奇怪 获取信息失败之后我的response是空的

caolvchong-top commented 10 months ago

global 的 response 去掉

在75行后插一句print(response)

看看输出

sherlR commented 10 months ago

1697029826514

1697029829628 e2) 1697029842710 没有走到那个地方呢就报错,get请求就直接报错了?wow,才发现

caolvchong-top commented 10 months ago

像是代理问题,开个新文件,试试下面这段代码:

import httpx

url = 'https://www.youtube.com/'

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
    'referer': 'https://www.youtube.com/'
}

response = httpx.get(url, headers=headers)

print(response.text)
print(f'status_code : {response.status_code}')

看看 status_code 是不是200

sherlR commented 10 months ago

应该是代理的问题....一样的报错 我第一次遇到这种问题,请问怎么设置呢 麻烦了

caolvchong-top commented 10 months ago

这个主要看你用的vpn客户端,看看有没有全局代理选项

或者 vscode 左下角设置 --> 搜索 proxy --> 在代理设置里配置代理服务器 像这种格式的:

http://127.0.0.1:port

具体要看你的vpn代理在哪个端口

sherlR commented 10 months ago

嗯?我开了全局代理也不行啊,YouTube这些都可以在浏览器打开,但是代码里就这里直接报错 image 那不是代码的问题 应该是我电脑的问题了,我用国内的网站的statecode是 200,也不知道什么原理了。

caolvchong-top commented 10 months ago

在你的VPN客户端上找到代理端口 然后配置vscode代理设置

或者配置windows全局代理,可以参见这篇内容

niuyuxuan commented 10 months ago

请问解决了吗?我也遇到这个问题了

caolvchong-top commented 10 months ago

请问解决了吗?我也遇到这个问题了

代理问题吗?

代理问题的话我这边实在没有办法

niuyuxuan commented 10 months ago

请问解决了吗?我也遇到这个问题了

代理问题吗?

代理问题的话我这边实在没有办法 谢谢了,想问一下,这几个url变量需要更换么?然后关于cookie,是用 test 那个文件的呢?

caolvchong-top commented 10 months ago

谢谢了,想问一下,这几个url变量需要更换么?然后关于cookie,是用 那个文件的呢?

代码里的url一般不用改,理论可用 cookie中只要含有 authtokenct0 字段即可 #10

niuyuxuan commented 10 months ago

谢谢了,想问一下,这几个url变量需要更换么?然后关于cookie,是用 那个文件的呢?

代码里的url一般不用改,理论可用 cookie中只要含有 authtokenct0 字段即可 #10 谢谢了,想问一下你的代理是怎么设置的,是用的代理软件吗?我这边换了两个环境也不成功

niuyuxuan commented 10 months ago

像是代理问题,开个新文件,试试下面这段代码:

import httpx

url = 'https://www.youtube.com/'

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
    'referer': 'https://www.youtube.com/'
}

response = httpx.get(url, headers=headers)

print(response.text)
print(f'status_code : {response.status_code}')

看看 status_code 是不是200

import httpx

url = 'https://www.youtube.com/'

headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36', 'referer': 'https://www.youtube.com/' }

proxies = { 'http://': 'http://localhost:port', # 代理1 'https://': 'http://localhost:port', # 代理2 url必须写成http }

with httpx.Client(proxies=proxies) as client: r1 = client.get(url, headers=headers) print(r1)

print(r1.text)
print(f'status_code : {r1.status_code}')

这个测试脚本改进了一下,我运行了一遍可以访问成功status_code是200。您看原代码里可不可以加一段代理设置呢?

caolvchong-top commented 10 months ago

import httpx

url = 'https://www.youtube.com/'

headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36', 'referer': 'https://www.youtube.com/' }

proxies = { 'http://': 'http://localhost:port', # 代理1 'https://': 'http://localhost:port', # 代理2 url必须写成http }

with httpx.Client(proxies=proxies) as client: r1 = client.get(url, headers=headers) print(r1)

print(r1.text)
print(f'status_code : {r1.status_code}')

这个测试脚本改进了一下,我运行了一遍可以访问成功status_code是200。您看原代码里可不可以加一段代理设置呢?

已更新

niuyuxuan commented 10 months ago

还想问一下,像这种那个重试有次数限制吗 test

niuyuxuan commented 10 months ago

请问如果只想爬最新的信息,应该怎么设置,谢谢了

caolvchong-top commented 10 months ago

还想问一下,像这种那个重试有次数限制吗 test

这个重试一般是网络不好,或者图片太大,导致固定时间内下载未完成,报超时

它会一直尝试下载,直到下载成功或手动结束

caolvchong-top commented 10 months ago

请问如果只想爬最新的信息,应该怎么设置,谢谢了

配置一下时间范围就行,[开始时间:结束时间(随便填,大于今天就行)]

niuyuxuan commented 10 months ago

请问如果只想爬最新的信息,应该怎么设置,谢谢了

配置一下时间范围就行,[开始时间:结束时间(随便填,大于今天就行)] 感谢