Соскоблить ссылку Проверить Href С Сайтов

#python #selenium #web-scraping #beautifulsoup

Вопрос:

Я хочу получить ссылку на проверку из GmailnatorInbox, и этот сайт содержит ссылку на проверку разногласий, которая является следующей ссылкой на проверку разногласий

Я хочу получить эту href с помощью bs4 и передать ее в ссылку драйвера selenium, например driver.get(url) url , в качестве href ofc.

Кто-нибудь может сделать какой-нибудь код, чтобы удалить ссылку из почтового ящика gmailnator, пожалуйста? Я попробовал источник страницы, однако источник страницы не содержит href.

Это код, который я написал, чтобы получить href, но href, который мне нужен (discord one), находится в исходном коде, поэтому я думаю, что именно поэтому он не появляется.

ОБНОВЛЕНИЕ! ВСЕ СДЕЛАНО И ИСПРАВЛЕНО

 driver.get('https://www.gmailnator.com/inbox/#for.ev.e.r.my.girlt.m.p@gmail.com')
time.sleep(6)
driver.find_element_by_xpath('//*[@id="mailList"]/tbody/tr[2]/td/a/table/tbody/tr/td[1]').click()
time.sleep(4)
url = driver.current_url
email_for_data = driver.current_url.split('/')[-3]
print(url)
time.sleep(2)
print('Getting Your Discord Verify link')
print('Time To Get Your Discord Link')
soup = BeautifulSoup(requests.get(url).text, "lxml")
data_email = soup.find("")
token = soup.find("meta", {"name": "csrf-token"})["content"]
cf_email = soup.find("a", class_="__cf_email__")["data-cfemail"]

endpoint = "https://www.gmailnator.com/mailbox/get_single_message/"

data = {
    "csrf_gmailnator_token": token,
    "action": "get_message",
    "message_id": url.split("#")[-1],
    "email": f"{email_for_data}",
}

headers = {
    "referer": f"https://www.gmailnator.com/{email_for_data}/messageid/",
    "cookie": f"csrf_gmailnator_cookie={token}; ci_session={cf_email}",
    "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) "
                  "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.86 "
                  "YaBrowser/21.3.0.740 Yowser/2.5 Safari/537.36",
    "x-requested-with": "XMLHttpRequest",
}

r = requests.post(endpoint, data=data, headers=headers)
the_real_slim_shady = (
    BeautifulSoup(r.json()["content"], "lxml")
    .find_all("a", {"target": "_blank"})[1]["href"]
)
print(the_real_slim_shady)
 

Комментарии:

1. Можем ли мы, по крайней мере, увидеть ваши усилия по решению этой проблемы ? ТАК что это не платформа, на которой мы пишем код для вас. Мы здесь только для того, чтобы помочь вам, пожалуйста, имейте это в виду.

2. конечно, я предоставлю его, я также узнал некоторую другую информацию о том, что необходимая ссылка находится в iframe srcdoc

Ответ №1:

Вы можете подделать все это с помощью pure requests , чтобы получить Verify ссылку. Во-первых, вам нужно получить значения token и cf_email значения. Тогда все довольно просто.

Вот как получить ссылку:

 import requests
from bs4 import BeautifulSoup

url = "https://www.gmailnator.com/geralddoreyestmp/messageid/#179b454b4c482c4d"
soup = BeautifulSoup(requests.get(url).text, "lxml")

token = soup.find("meta", {"name": "csrf-token"})["content"]
cf_email = soup.find("a", class_="__cf_email__")["data-cfemail"]

endpoint = "https://www.gmailnator.com/mailbox/get_single_message/"

data = {
    "csrf_gmailnator_token": token,
    "action": "get_message",
    "message_id": url.split("#")[-1],
    "email": "geralddoreyestmp",
}

headers = {
    "referer": "https://www.gmailnator.com/geralddoreyestmp/messageid/",
    "cookie": f"csrf_gmailnator_cookie={token}; ci_session={cf_email}",
    "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) "
                  "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.86 "
                  "YaBrowser/21.3.0.740 Yowser/2.5 Safari/537.36",
    "x-requested-with": "XMLHttpRequest",
}

r = requests.post(endpoint, data=data, headers=headers)
the_real_slim_shady = (
    BeautifulSoup(r.json()["content"], "lxml")
    .find_all("a", {"target": "_blank"})[1]["href"]
)
print(the_real_slim_shady)
 

Вывод (ваша ссылка будет другой!):

 https://click.discord.com/ls/click?upn=qDOo8cnwIoKzt0aLL1cBeARJoBrGSa2vu41A5vK-2B4us-3D77CR_3Tswyie9C2vHlXKXm6tJrQwhGg-2FvQ76GD2o0Zl2plCYHULNsKdCuB6s-2BHk1oNirSuR8goxCccVgwsQHdq1YYeGQki4wtPdDA3zi661IJL7H0cOYMH0IJ0t3sgrvr2oMX-2BJBA-2BWZzY42AwgjdQ-2BMAN9Y5ctocPNK-2FUQLxf6HQusMayIeATMiTO-2BlpDytu-2FnIW4axB32RYQpxPGO-2BeHtcSj7a7QeZmqK-2B-2FYkKA4dl5q8I-3D
 

Комментарии:

1. по какой-то причине это работало совсем недавно, но сейчас не работает. ошибка Expecting value: line 1 column 1 (char 0) , которую я получаю, обновляет мой код, чтобы вы могли видеть, как я это делаю. когда я делаю это с помощью кода ur, кажется, что он работает нормально.

2. И что именно вы пытаетесь сделать?

3. я получаю ссылку на идентификатор сообщения, используя драйвер seleniums.текущий.url. я обновил свой код выше, по какой-то причине он, похоже, не работает.

4. подождите, я думаю, в чем проблема. ссылка на заголовки и электронное письмо с данными. но я, похоже, не могу разобраться в том, как сделать электронное письмо в формате данных и ссылок в формате {}, чтобы оно получало его с текущего URL-адреса

5. пожалуйста, измените href [0] на [1], чтобы получить ссылку проверить href. я все исправил