【发布时间】:2018-08-21 13:14:33
【问题描述】:
我正在尝试制作一个机器人,它使用它的 xapth 从网站检索链接列表,然后让它点击所有链接。
xpath 看起来像这样:[@class="gridicons"]/li[i]/div/ul/li/p/a 和li[i] 中的i 是从1 到n,n 是存在的链接数。
代码sn-p为:urls=driver.find_elements_by_xpath('//[@id="gridicons"]/ul/li/div/ul/li/p/a')
for url in urls:
driver.execute_script("window.open(arguments[0]);",url.get_attribute("href"))
这很好用,因为find_elements_by_xpath 返回一个列表并将其存储在urls 中。在这种情况下,如果您查看 xpath,每个分区只有一个关联的 url。 Here is an image for reference.
但是,如果每个分区有多个链接,则 xpath 将更改为://*[@class="gridicons"]/li[i]/div/ul/li[j]/p/a 其中i 构成块数,j 是每个块中的链接数。
如果我使用代码:
urls = driver.find_elements_by_xpath('//*[@class="gridicons"]/li/div/ul/li[1]/p/a')
print(urls)
为了只检索每个块上的第一个链接,当我打印 url 时,它是一个空列表。我不明白为什么,因为检查元素框向我显示了 url 列表,从而使 xpath 有效。 Here is the image.
【问题讨论】:
-
添加与简单文本相同的 HTML 示例而不是图像
-
是的,请添加相关部分的实际 HTML。