首页 > 解决方案 > 如何在 html 选择器中查看隐藏的内容?

问题描述

当我想显示视图源时,它看起来像这样:

<li class="results__list-container-item"></li>

但是当我在 Firefox 中单击 Inspect Element 时,我会看到如下内容:

<li class="results__list-container-item"><div class="offer offer--normal"><a class="offer__click-area" href="/praca/data-engineer-for-bixby-voice-assistant-krakow,oferta,7201566"></a><div class="offer__info"><div class="offer-details"><div class="offer-logo"><a href="https://pracodawcy.pracuj.pl/company/18797776/profile" class="offer-logo__link"><img src="https://i.gpcdn.pl/oferty-loga-firm/wyniki-wyszukiwania/14032.png" alt="logo" class="offer-logo__image"></a></div><div class="offer-details__text"><h3 class="offer-details__title"><a class="offer-details__title-link" href="/praca/data-engineer-for-bixby-voice-assistant-krakow,oferta,7201566">Data Engineer for Bixby Voice Assistant</a></h3><p class="offer-company"><span class="offer-company__link-wrapper"></li>

并且可以通过网络爬虫(BeautifulSoup4)提取隐藏的内容吗?

标签: pythonpython-3.xbeautifulsoup

解决方案


隐藏内容通常是通过 JS 生成的。如果您向网页发出请求,它将不包含隐藏的 HTML,因为必须在浏览器中加载该页面才能加载隐藏的内容。我们可以通过使用 selenium 网络浏览器实际打开页面,然后从呈现的页面中获取 HTML 来解决这个问题。

from selenium import webdriver
from bs4 import BeautifulSoup

browser = webdriver.Firefox()
browser.get('example-url.com')
html = browser.page_source
soup = BeautifulSoup(html,features='html.parser')

hidden_divs = soup.find_all('div', {'class':'offer offer--normal'})

当然,我们需要您正在查看的 URL 来实际测试它,但它通常是这样工作的。


推荐阅读