【发布时间】:2021-04-20 13:35:34
【问题描述】:
我正在尝试从 HTML id="itemSummaryPrice" 中提取文本,但我无法弄清楚。
html = """
<div id="itemSummaryContainer" class="content">
<div id="itemSummaryMainWrapper">
<div id="itemSummaryImage">
<img src="https://img.rl.insider.gg/itemPics/large/endo.fgreen.891c.jpg" alt="Forest Green Endo">
</div>
<h2 id="itemSummaryTitle">Item Report</h2>
<h2 id="itemSummaryDivider"> | </h2>
<h2 id="itemSummaryDate">Friday, January 15, 2021, 8:38 AM EST</h2>
<div id="itemSummaryBlankSpace"></div>
<h1 id="itemSummaryName">
<span id="itemNameSpan" style="color: rgb(88, 181, 73);"><span>Forest Green</span> <span>Endo</span></span>
</h1>
**<h1 id="itemSummaryPrice" style="color: rgb(88, 181, 73);">200 - 300</h1>**
</div>
</div>
"""
我的代码:
price_checker_site = requests.get(price_checker_url + match2)
price_checker_site_soup = BeautifulSoup(price_checker_site, 'html.parser')
price_check_item = price_checker_site_soup.find('h1', {'id': 'itemSummaryPrice'})
print(price_check_item)
返回:
<h1 id="itemSummaryPrice"></h1>
我要提取的内容:
<h1 id="itemSummaryPrice">200 - 300</h1>
OR
<h1 id="itemSummaryPrice" style="color: rgb(88, 181, 73);">200 - 300</h1>
OR
200 - 300
【问题讨论】:
-
我无法用附加的 HTML 重现这个 - 当我运行它时它返回
<h1 id="itemSummaryPrice" style="color: rgb(88, 181, 73);">200 - 300</h1>。您的代码中的其他地方一定有问题,例如当您请求 HTML 时。你检查过返回的 HTML 是什么样子的吗? -
猜测,我会说元素文本是由 javascript 填充的。可以分享你的网址吗?
-
如果是这种情况@carlos(很可能),请考虑使用selenium 而不是
requests。 -
@JustinEzequiel rl.insider.gg/en/psn/octane/grey 这是一个与我在帖子中使用的网站相似的网站。
-
检查了你的 URL,
<h1 id="itemSummaryPrice"></h1>是你在没有 javascript 的情况下得到的。因此,您需要使用 javascript 的 Selenium,或者您需要找到 javascript 发出的请求,然后使用 requests 复制该请求。
标签: python html beautifulsoup