Невозможно получить ссылку на электронную почту из какого-либо тега скрипта с веб-страницы - PullRequest
0 голосов
/ 11 мая 2018

Я написал скрипт на python для удаления адреса электронной почты с веб-страницы, но я не могу.Адрес электронной почты находится внутри тега script, и я не могу преодолеть этот барьер для получения контента.Любая помощь, чтобы получить это будет высоко ценится.

Ссылка на веб-страницу

Я пробовал до сих пор с:

import requests
from bs4 import BeautifulSoup

url = "replace_with_link_above"

res = requests.get(url)
soup = BeautifulSoup(res.text, "lxml")
for items in soup.select(".profile-right-info"):
    email = items.select_one("dd a[href^='mailto:']")['href']
    print(email)

После выполнения яполучите следующую ошибку:

    email = items.select_one("dd a[href^='mailto:']")['href']
TypeError: 'NoneType' object is not subscriptable

Кстати, ссылка электронной почты находится во второй строке под заголовком profile details на этой веб-странице.

1 Ответ

0 голосов
/ 11 мая 2018

Вы должны проверить вкладку Сеть инструментов Chrome dev:

enter image description here

Есть блок кода:

 <script language='JavaScript' type='text/javascript'>
 <!--
 var prefix = 'm&#97;&#105;lt&#111;:';
 var suffix = '';
 var attribs = '';
 var path = 'hr' + 'ef' + '=';
 var addy99716 = "R&#111;bz" + '&#64;';
 addy99716 = addy99716 + '&#97;ll&#105;nth&#101;p&#111;l&#105;sh' + '&#46;' + 'c&#111;m';
 document.write( '<a ' + path + '"' + prefix + addy99716 + suffix + '"' + attribs + '>' );
 document.write( addy99716 );
 document.write( '<\/a>' );
 //-->
 </script>

, который оценивается как тег <a> с атрибутом href, равным:

m&#97;&#105;lt&#111;:R&#111;bz&#64;&#97;ll&#105;nth&#101;p&#111;l&#105;sh&#46;c&#111;m

, что будет mailto:Robz@allinthepolish.com, если вы декодируете html-объекты, вы можете проверить это здесь: https://mothereff.in/html-entities

Итак, одним из вариантов будет использование чего-то вроде Selenium, так как cgte предлагает .

Другой вариант - получить содержимое тега <dd>, проанализировать код js.а затем либо запустите его с node исполняемым файлом (что может быть опасно, если вы не запустите его в песочнице), либо выполните оценку вручную.Вариант с Selenium кажется намного более простым.

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