【发布时间】:2023-03-17 11:49:02
【问题描述】:
我有一个脚本,可以从网页中提取网址、加载每个链接并提取我需要的数据。然而,经过进一步调查,我发现 Selenium 没有按应有的方式打开链接,并且正在复制信息。例如如下:
link 1 - Title:ABC <-- within link, extract 123
link 2 - Title:DEF <-- within link, extract 456
link 3 - Title:GHI <-- within link, extract 789
link 4 - Title:JKL <-- within link, extract 000
输出应该如下:
ABC, 123
DEF, 456
GHI, 789
JKL, 000
但是我得到的输出如下:
ABC, 123
ABC, 123
GHI, 789
JKL, 000
这种行为似乎是随机的。
这里是代码
elems = driver.find_elements_by_xpath(alllinks)
for elem in elems:
links.append(elem.get_attribute("href"))
for url in links:
try:
time.sleep(0.5)
driver.get(url)
time.sleep(2)
有人遇到过这种行为吗?
编辑:更新:
对此的更新,我只抓取了 URL 的 3 次,并将结果相互比较。 URL 是唯一的,并根据站点提取。 据我所知,它是 Selenium 从数组中加载 URL 的方式。
【问题讨论】:
-
确保在加载 url 时进行适当的同步。我觉得你的脚本在页面加载完成之前从第二个链接加载中获取了信息,这就是为什么你得到了第一个链接的重复信息。
-
有道理,您是否建议在页面加载后使用 time.sleep(x) 来复制 URL,或者是否有我可以使用的 python / selenium 特定命令?
-
您是否使用
driver.get()进行网址导航?加载页面后,所有页面之间是否有任何共同元素? -
发布您的代码!不是每个人都能读心术
-
我将所有抓取的 URL 附加到一个变量中,然后在 for 循环中使用 driver.get() 命令遍历每个项目。代码sn-p如下:
elems = driver.find_elements_by_xpath(alllinks) for elem in elems: links.append(elem.get_attribute("href")) for url in links: try: time.sleep(0.5) driver.get(url) time.sleep(2)
标签: python python-2.7 selenium selenium-webdriver selenium-chromedriver