我有一个脚本,可以从网页中提取网址,加载每个链接并提取所需的数据。但是,经过进一步的调查,我发现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的方式。
答案 0 :(得分:0)
如果我正确理解了您的查询,则应该加载最新的href,而不是每次都遍历所有href。
array
答案 1 :(得分:0)
我想为我的问题提供答案。这不是Selenium的问题,而是我的代码的问题。 我有一个try / except代码块,如果一个元素存在,该代码将执行,如果存在,该变量将附加提取的文本。但是,如果元素不存在,则变量将包含上一个循环中的文本并将其写入文件。
为避免这种情况,我在for循环的末尾添加了一个del-可能还有其他更优雅的方法可以这样做,但确实可以解决我的问题。