【问题标题】:How do I get information from an iframe with BeautifulSoup?如何使用 BeautifulSoup 从 iframe 获取信息?
【发布时间】:2020-07-24 21:17:30
【问题描述】:

我需要从电子商务链接的 iframe 中获取平均分数:https://produto.mercadolivre.com.br/MLB-1218117849-par-farol-polo-hatch-sedan-2003-2004-2005-2006-cromada-_JM#position=1&type=item&tracking_id=d57fba01-b043-49ca-9be5-7b026c275bd4

点击标题下方的星星即可访问 iframe。

当我检查元素时,我发现:

<a rel="nofollow" class="iframe-modal " data-modal:url="/noindex/catalog/reviews/MLB1218117849?noIndex=true&amp;itemId=MLB1218117849&amp;modal=true&amp;modalWidth=840&amp;modalHeight=400&amp;access=stars" data-modal:dinamic="true" data-modal:width="840" data-modal:height="400" data-modal:frameless="1" data-modal:style="new">

在这种情况下,我需要'data-modal:url=',即'/noindex/catalog/reviews/MLB1218117849?noIndex=true&amp;amp;itemId=MLB1218117849&amp;amp;modal=true&amp;amp;modalWidth=840&amp;amp;modalHeight=400&amp;amp;access=stars',然后才能获得“4.7”平均星数信息。

我尝试了很多我在这里看到的选项,但我什至无法获得链接。我得到的最接近的可能是:

eval_url = (soup.
                 find('a', {'rel':'nofollow', 
                            'class':'iframe_modal ',
                            'data-modal:url':True}).get('data-modal:url').text)

仍然无法正常工作。我做错了什么?

【问题讨论】:

    标签: python html web-scraping iframe beautifulsoup


    【解决方案1】:

    要获取4.7的平均星数信息,您可以选择带有class="review-summary-average"的元素。

    例如:

    import requests
    from bs4 import BeautifulSoup
    
    
    url = 'https://produto.mercadolivre.com.br/MLB-1218117849-par-farol-polo-hatch-sedan-2003-2004-2005-2006-cromada-_JM#position=1&type=item&tracking_id=d57fba01-b043-49ca-9be5-7b026c275bd4'
    soup = BeautifulSoup(requests.get(url).content, 'html.parser')
    
    print(soup.select_one('.review-summary-average').text)
    

    打印:

    4.7
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      • 1970-01-01
      • 2019-05-31
      • 2020-12-03
      • 1970-01-01
      相关资源
      最近更新 更多