Как разобрать конечный домен из URL - PullRequest
0 голосов
/ 08 мая 2020

У меня есть чудовищный URL-адрес Facebook «https://l.facebook.com/l.php?u=http%3A%2F%2Fon.theatln.tc%2FEQs2HvJ%3Ffbclid%3DIwAR3TDwS8n30YYzCVqPceAVd3D_OYmy_SHWGTqKjNVPaI_C0qZn9OgIMRdAQ&h=AT2IGmpY8Hn4DC7nr9l8PScyiYSQYxxP9mY9cA0z09dgbhN0s4nv6lXhrxXDtRVkfwDbRqb5jMMiK_XIVkUooNdUlNA1v56my_FaYOPy7CskvfoqH5VrrICUs7qoq83L_TWzmm8SE4pp8v1l0ikDBvky35KSq3FCGTLhgkTm3XP4XNXCur-R80JJwwmWtLspm5tbpx26475YU1yUdognJg2CCCredWJehAth4xsqeOFUw40EvwWtBrtRgDZdE3ERHr7_53dccR6XnZqR5Jwqdh-UkVkY-UdItvLicSwmjWT7IErBGTmBDoFx0pQk4Hc4SvoJ-CIZkRwOBUHA41-OzQIvlSqbbWdCZvvs2b9b3PO87ZFlh07XKnj7Lp4EJD_SPl-10yDvEZOaLfz23Mljr2aVTcnuDw9mWqWtb_bY0LLiCKJlmUK6CU2fzfJre6aN1AfOncKnTLVa6Kf1-cB-F5ftF8icUWye1hBmJ5LQCxbqlq1AAyonYk2L-Kiw6nytcu5g-MYCYhy8pAuOVn_YioWY0wa93xjlySV45GkMW3H0xtv_tRVnPsGo-Ts0CpshD1Xx9B9txOXP-WvipQ9AXV2uBN33WXq01xULSRr3bN3qGKsR7wo3LOl8w0QwyMDH4-0»

Я хочу распечатать ссылку, на которую указывает этот URL-адрес: «https://www.theatlantic.com/culture/archive/2020/05/upload-black-mirror-hell-digital-heaven/611293/. "

Мой код работает для синтаксического анализа большинства URL-адресов Facebook, но недавно я обнаружил, что он не работает с этим типом. Он печатает «http://on.theatln.tc/EQs2HvJ

# url is the long FB url

            import urllib.parse as url_parse
            news_link = url_parse.unquote(url).split("?u=")[1].split("?fbclid")[0]
            print(news_link)

1 Ответ

1 голос
/ 08 мая 2020

Вроде нормально работает. Этот URL-адрес (http://on.theatln.tc/EQs2HvJ) выглядит как ссылка, встроенная в URL-адрес facebook. Если вы получите эту ссылку, она, вероятно, приведет к перенаправлению на конечный пункт назначения. Рассмотрите возможность использования модуля запросов для отслеживания перенаправлений:

>>> import requests
>>> x = requests.get('http://on.theatln.tc/EQs2HvJ')
>>> print(x.url)
https://www.theatlantic.com/culture/archive/2020/05/upload-black-mirror-hell-digital-heaven/611293/?utm_source=facebook&utm_campaign=the-atlantic&utm_content=edit-promo&utm_medium=social&utm_term=2020-05-07T16%3A56%3A03
>>>

Или альтернативно:

>>> x = requests.head('http://on.theatln.tc/EQs2HvJ')
>>> print(x.headers['location'])
https://www.theatlantic.com/culture/archive/2020/05/upload-black-mirror-hell-digital-heaven/611293/?utm_source=facebook&utm_campaign=the-atlantic&utm_content=edit-promo&utm_medium=social&utm_term=2020-05-07T16%3A56%3A03

Преимущество здесь в том, что он не получает конечный URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...