在scrapy-playwright中,有没有一种方法可以处理动态加载的选择器和页面上的点击?

0yycz8jy  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(109)

我有一个这样的用例,假设我使用scrapy playwright抓取一个网站abc.com,它加载的页面有3种不同的类型,比如

page1->#selector1 
page2->#selector2
page3->#selector3

并且它是动态变化的,不能保证哪个先加载。我想点击选择器,根据哪个是用scrapy-playwright加载的。
有没有方法可以动态加载这个选择器?
我试过用

PageMethod("click","#selector1"),
PageMethod("click","#selector2"),
PageMethod("click","#selector3")

这将超时,因为在该时间点#selector2首先加载到页面上,导致操作失败,因为第一个方法是PageMethod(“click”,"#selector1”)

bpzcxfmw

bpzcxfmw1#

也许你可以检查选择器是可见的,然后你可以点击它?

if PageMethod("isVisible","#selector1"):
    PageMethod("click","#selector1")    
if PageMethod("isVisible","#selector2"):
    PageMethod("click","#selector2")    
if PageMethod("isVisible","#selector3"):
    PageMethod("click","#selector3")

我想你可以使用isVisible方法,因为scrapy_playwright支持的和你在playwright中所用的一样:https://github.com/scrapy-plugins/scrapy-playwright#supported-methods
当然,isVisible()是playwright中支持的方法:https://playwright.dev/python/docs/api/class-page#page-is-visible

相关问题