【发布时间】:2020-01-07 20:33:20
【问题描述】:
我希望打印出手动检查页面时看到的内容。但是,它似乎正在打印页面源,因为我在手动检查时找不到那里的元素。
我正在尝试获取美国银行信用卡的产品名称。
我使用 Selenium 是因为 bankofamerica 网站上的产品名称是通过 Javascript 生成的。一旦我知道我正在解析正确的元素,我计划通过搜索类来找到卡片名称和其他相关元素。
我相信我已经正确安装了 Firefox 网络驱动程序,因为代码打开了一个浏览器窗口,指向正确的页面。
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('https://www.bankofamerica.com/credit-cards/#filter')
html = browser.execute_script("return document.documentElement.outerHTML")
sel_soup = BeautifulSoup(html,'html.parser')
print (sel_soup)
【问题讨论】:
-
您没有使用所需的 xpath 过滤已解析的 html,这就是它显示整个 html 的原因。
-
@supputuri 非常感谢您的帮助。如果我仍然遗漏了什么,我深表歉意,但在这个阶段,我希望它能够输出整个 html。但是,如果我手动检查页面,它不会输出与我看到的相同的 html,而是输出页面的静态源(不是 Javascript 输出的动态元素)。这有助于澄清吗?
-
您的意思是在滚动页面时将加载的元数据或动态数据?我建议在你的情况下使用 selenium 来获得你想要的结果,因为有一个 js 正在加载数据,而 BS 将获得没有 js 数据的 html。
-
滚动页面时加载的动态数据。具体来说,如果我手动检查页面,我可以找到 class="small-12 medium-9 columns" 包含我需要的信息,但是当我运行我在 'class="small-12 medium-9 上面发布的代码时columns" ' 不会出现在任何地方。谢谢 :) 啊,我刚刚阅读了您的第二部分,我将努力用与硒相关的其他东西替换 BeautifulSoup。只需要弄清楚应该是什么...... :)
-
刚刚发布了伪代码,应该会给你一个好的开始。
标签: python selenium-webdriver xpath beautifulsoup