【问题标题】:Scrape Email address from a Tripadvisor webpage从 Tripadvisor 网页抓取电子邮件地址
【发布时间】:2020-07-15 16:51:35
【问题描述】:
【问题讨论】:
标签:
python
beautifulsoup
python-requests
tripadvisor
【解决方案1】:
电子邮件是在页面上找到的 Json 变量内进行 Base64 编码的。
您可以使用此示例获取页面上找到的所有电子邮件:
import re
import json
import base64
import requests
from bs4 import BeautifulSoup
url = 'https://www.tripadvisor.in/Attraction_Review-g189400-d2020955-Reviews-Chat_Tours-Athens_Attica.html'
html_data = requests.get(url).text
data = re.search(r'window\.__WEB_CONTEXT__=(\{.*?\});', html_data).group(1)
data = json.loads(data.replace('pageManifest', '"pageManifest"'))
def get_emails(val):
if isinstance(val, dict):
for k, v in val.items():
if k == 'email':
if v:
yield v
else:
yield from get_emails(v)
elif isinstance(val, list):
for v in val:
yield from get_emails(v)
for email in get_emails(data):
email = base64.b64decode(email).decode('utf-8')
email = re.search(r'mailto:(.*)_', email).group(1)
print(email)
打印:
chat@chatours.gr
【讨论】:
-
-
嘿,请您帮我解决另一个问题,tripadviser 上的两个页面似乎有相同的链接但内容不同,tripadvisor.in/… 如果您转到右下角并单击“查看所有旅行社雅典”它将您引导到我想通过请求访问的内容我想知道它是否也以编码形式存在于源代码中