我正在使用 Scrapy + Splash 来抓取网页并尝试从谷歌广告横幅和其他广告中提取数据,但我很难通过 xpath 进入它们。
我正在使用Scrpay-Splash API 来呈现页面,以便加载它们的脚本和图像并截取屏幕截图,但似乎谷歌广告横幅是由 JS 脚本创建的,然后将其内容插入到网页中 iframe 内的新 html 文档中,这样:
Splash 确保代码被渲染,所以我不会遇到scrapy 在脚本中读取脚本内容而不是生成的 html 的常见问题——但我似乎无法找到一种方法来指示必要的 XPath到达我需要的元素节点(广告的 href 链接)。
如果我在 google 中检查元素并复制它的 xpath,它只会给我//*[@id="aw0"]
,如果 iframe 的 html 就在这里,我觉得这会起作用,但无论我怎么写它都会返回空,我觉得这可能是因为 XPath 没有t 优雅地处理堆叠在 html 文档中的 html 文档。
包含 google 广告代码的 iframe 的 XPath 是
//*[@id="google_ads_iframe_/87824813/hola/blogs/home_0"]
{the numbers are constant}。
有没有办法将这些 XPaths 堆叠在一起,让scrapy 跟踪到我需要的容器中?或者我应该以其他方式直接解析 Splash 响应对象并且我不能依赖 Response.Xpath/Response.CSS 吗?