html разделяется после каждого знака равенства

В настоящее время я пытаюсь получить полную ссылку из электронной почты, используя imaplib и электронную почту.

Мой текущий код выглядит так:

result, data = mail.uid('search', None, 'HEADER Subject "Confirm your subscription to the Raffle"')
data = data[0].split()
recent = data[-1]
result2, themail = mail.uid('fetch', recent,'(RFC822)')
raw_email = themail[0][1].decode('utf-8')
email_message = email.message_from_string(raw_email)
html =email_message.get_payload()[1]
html = str(html)
soup = BeautifulSoup(html,"lxml")
for a in soup.find_all('a', href=True):
    print("Found the URL:", a['href'])

это часть HTML, где все обрезано по '='.

Это означает, что ссылка, которую я получаю, выглядит так: https://app3.emlgrid.com/smrd.htm?url=3Dhttps%3A%2F%2Fapp3.salesman= Которая также вырезана, и я не знаю, как правильно это сделать, пожалуйста. не ругайте меня за правильный формат вопроса. Кто-нибудь знает, почему он это делает?

</span> </p></a></td>
</tr> <!--[if mso]></tr></td></table></tbody><![endif]--> <!--[if mso]><tr =
width=3D"100%" style=3D"width: 100%" height=3D34> <td align=3Dcenter valign=
=3Dmiddle width=3D151 style=3D"width: 100%; text-align: center; height: 34p=
x; position: initial; max-width: 151px;"> <v:roundrect xmlns:v=3D"urn:schem=
as-microsoft-com:vml" xmlns:w=3D"urn:schemas-microsoft-com:office:word" hre=
f=3D"https://app3.salesmanago.pl/optIn.htm?uid=3D8c634c4-4lld-40c2-a24e-75=
5663486046&sec=3Df17dac74a7b3094ew3582fk399ec1301f8511d54f132492e29a20c=
ec330c&redirect=3Dhttps%3A%2F%2Fapp3.salesmanago.pl%2Fms%2Fsid%2Fkhalyc1vfr=
yy33u1%2F21ofkey06bcrmxqw.htm&tags=3DRAFFLE_GENERAL_CONFIRMED,RAFFLE_DD1391=
-600_CONFIRMED&smclient=3D8c6354c4-4ccd-40c2-a24e-755663486046&smconv=3Dfor=
m-confirmation&smlid=3D2&utm_source=3Dsalesmanago&utm_medium=3Demail_confir=
mation&utm_campaign=3Ddefault" style=3D"height:34px;v-text-anchor:middle;wi=
dth:151px;" arcsize=3D"14%" strokecolor=3D"#000000" fillcolor=3D"#000000"> =
<w:anchorlock/> <center style=3D"color: #FFFFFF;font-family:Helvetica, Aria=
l,sans-serif;font-size:14px;"> CONFIRM RAFFLE </center> </v:roundrect> </td=
> </tr><![endif]-->
</tbody>

person DerApfel0    schedule 26.07.2021    source источник
comment
В python 3 используйте message_from_bytes, а не decode & message_from_string.   -  person Max    schedule 27.07.2021


Ответы (1)


Ваша строка не является HTML. Он закодирован.

Расшифруйте его, прежде чем искать по ссылкам

person mplungjan    schedule 26.07.2021