如何使用带有 Playwright 的 query_selector_all 获取 iframe 中的文本

问题描述 投票:0回答:1

我想使用 Playwright 和 Python 从网页上的 iframe 获取文本数据。由于iframe中的数据,当我尝试直接使用page.query_selector_all时,它不起作用。

例如,下面的效果很好,但这不是我想要的解决方案。

inner_text = await page.frame_locator('iframe#mypage_frm').locator('//*[@id="List"]').inner_text()
inner_html = await page.frame_locator('iframe#mypage_frm').locator('//*[@id="List"]').inner_html()
print(inner_text)
print(inner_html)

我需要使用query_selector_all通过iframe中的循环获取数据,因为数据由重复循环组成。我尝试了很多想法,但都行不通。例如,下面的方法不起作用。

await page.frame_locator('iframe#mypage_frm').query_selector('//*[@id="List"]')

请告知如何在 iframe 中使用 query_selector_all (或只是 query_selector)。谢谢你。

python web-scraping iframe playwright playwright-python
1个回答
3
投票

您可以使用选择器返回框架的

ElementHandle
,然后使用
content_frame
方法获取 iframe 的内容框架的句柄。这个
Frame
对象支持使用
query_selector
:

iframe_handle = await page.wait_for_selector("#mypage_frm")
iframe = await iframe_handle.content_frame()
await iframe_handle.query_selector('//*[@id="List"]')

或者,您也可以使用

page.frame
创建框架对象

© www.soinside.com 2019 - 2024. All rights reserved.