【问题标题】:Resolve masked/shortened URL twint is scraping from twitter解决从 twitter 抓取的屏蔽/缩短 URL twint
【发布时间】:2021-03-13 18:31:26
【问题描述】:
我正在使用 twint 来抓取 Twitter 个人资料。
当我运行这个脚本时:
c = twint.Config()
c.Username = username
c.Store_object = True
c.Store_object_users_list = users
c.Hide_output = True
twint.run.Lookup(c)
try:
userna = users[0]
except:
continue
web = userna.url
我得到的是屏蔽/缩短的 URL,而不是真实的。我怎样才能得到真正的网址?
你有什么建议?
【问题讨论】:
标签:
python
redirect
web-scraping
twitter
twint
【解决方案1】:
以下工作。
import requests
resp = requests.head(short_link)
resp.status_code
true_url = resp.headers["Location"]
【解决方案2】:
前言:此答案基于我评估UVuuMe's answer(初始版本)的结果和发现。
要将缩短的 URL 转换为它所代表的完整 URL,您可以使用 twint 间接附带的包 requests(它是 googletransx 所必需的,这是您已经安装的 twint 所必需的,所以不需要pip install requests)。
Send a HEAD request,然后检查响应的status_code 是否为303,然后才读取location 标头;在其他情况下,location 将出现在响应中,但不会出现在 HTTP 200 OK 的情况下。
import requests
# Short URL for a Python Requests Tutorial
short_url = 'https://youtu.be/tb8gHvYlCFs'
res = requests.head(short_url)
if res.status_code == 303: # "See Other"
full_url = res.headers['location']
elif res.status_code == 200: # "OK"
# let's conclude that short_url is already what we are looking for
full_url = short_url
else:
# replace by your error handling:
assert(False)