我使用NightmareJS来搜索网站以获取数据,并且该网站使用ID来识别他们以与下面的代码类似的方式锚定标记。
<div>
<a id="#LINK1$1"></a>
</div>
我试图使用&#39; .click(选择器)&#39;方法,它使用querySelector作为默认值,但我似乎无法通过id获取锚标记。 我试过了两次
.click('#LINK1$1'),
.click('\u{0023}LINK\u{0031}\u{0024}\u{0031}')
但它们都会导致相同的错误
"Failed to execute 'querySelector' on 'Document': '#LINK1$1' is not a valid selector."
我该怎么办?
答案 0 :(得分:0)
您可以使用Xpath方式执行此操作。 Puppeteer有一个xpath函数。
来自他们的文档,
>>> img= np.random.rand(2048,2048)
>>> kernel = np.ones((32,32), dtype=np.float)
>>> t1= time.time();dst1 = cv2.filter2D(img,-1,kernel);print(time.time()-t1)
0.208490133286
>>> t1= time.time();dst2 = signal.correlate(img,kernel,mode='valid',method='fft');print(time.time()-t1)
0.582989931107
>>> t1= time.time();dst3 = signal.convolve2d(img,kernel,mode='valid');print(time.time()-t1)
11.2672450542
>>> t1= time.time();dst4 = signal.correlate2d(img,kernel,mode='valid');print(time.time()-t1)
11.2443971634
>>> t1= time.time();dst5 = signal.fftconvolve(img,kernel,mode='valid');print(time.time()-t1)
0.581533193588
它将返回一个元素数组。我们可以page.$x(expression)
expression <string> Expression to evaluate.
returns: <Promise<Array<ElementHandle>>>
The method evaluates the XPath expression.
随意使用它们。
现在应用它,
click
完成!
btw这也适用于浏览器,
// we execute the xpath
const elems = await page.$x(`//*[@id="#LINK1$1"]`)
// We click the first element, since it returns an array
await elems[0].click();