【问题标题】:Scrape Email address from a Tripadvisor webpage从 Tripadvisor 网页抓取电子邮件地址
【发布时间】:2020-07-15 16:51:35
【问题描述】:

我正在尝试使用 Python-BS4-requests 从以下网页中抓取电子邮件地址,但在源代码中无法访问该电子邮件地址。

https://www.tripadvisor.in/Attraction_Review-g189400-d2020955-Reviews-Chat_Tours-Athens_Attica.html

电子邮件地址在我的邮件应用程序中打开,但我在页面源中找不到指向它的链接。 我知道这可以通过观察网络选项卡并发出网站发出的相同帖子请求来完成,但无法使其正常工作。

提前致谢!!

【问题讨论】:

    标签: 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/… 如果您转到右下角并单击“查看所有旅行社雅典”它将您引导到我想通过请求访问的内容我想知道它是否也以编码形式存在于源代码中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 2018-04-09
    相关资源
    最近更新 更多