python - 如何在 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)提取隐藏的内容吗?
解决方案
隐藏内容通常是通过 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 来实际测试它,但它通常是这样工作的。
推荐阅读
- animation - Pygame是在不暂停程序的情况下减慢某个动画的帧速率的最佳方法?
- wpf - 如何修复 WPF MVVM 中的绑定 TextBlock?
- android - 有没有办法从我的 expo 应用程序 (react native 解决方案) 在“添加页面”上打开 instagram 应用程序?
- javascript - 如何遍历本地存储中的对象集合
- python-3.x - 如何使用cognitive_face调用Microsoft认知面部并将图像作为字节python传递
- assembly - 下面的汇编代码是做什么的?我需要编写一个代码来检查是否按下了 shift 按钮
- reactjs - 为什么 useReducer 第一个参数设置为调度值?
- node.js - 如何将包含图像Base64代码的字符串转换为字节?
- swift - iOS App无法将json文件发送到flask API
- html - 需要基本的 HTML 帮助