Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中使用循环后变量[selenium]_Python_Selenium_For Loop - Fatal编程技术网

在Python中使用循环后变量[selenium]

在Python中使用循环后变量[selenium],python,selenium,for-loop,Python,Selenium,For Loop,我试图打印quality或循环后的任何变量,但它不起作用。它只在循环之前工作。我如何使用它? 我想将包含所有这些详细信息的get请求发送到链接 导入时间 从selenium导入webdriver 从selenium.webdriver.common.keys导入密钥 driver=webdriver.Firefox() 对于范围(1,2)内的x: 驱动程序。获取(“http://sparo.live/movies?page=%d“%(x)) text=driver.通过xpath(“div[@

我试图打印
quality
或循环后的任何变量,但它不起作用。它只在循环之前工作。我如何使用它? 我想将包含所有这些详细信息的get请求发送到链接

导入时间
从selenium导入webdriver
从selenium.webdriver.common.keys导入密钥
driver=webdriver.Firefox()
对于范围(1,2)内的x:
驱动程序。获取(“http://sparo.live/movies?page=%d“%(x))
text=driver.通过xpath(“div[@class='boxALL']/article/a”)查找元素
打印(len(文本))
数组=[]
信息=[]
对于文本中的链接:
links=link.get_属性(“href”)
array.append(链接)
对于数组中的i:
驱动程序。获取(i)
title=driver.find_element_by_xpath(“./*[@id='wrapper']/div/div/div[1]/h1”)
english_title=driver.find_element_by_xpath(“./*[@id='wrapper']]/div/div/div[1]/h2”)
year=driver.通过xpath(“./*[@id='wrapper']/div/div/div[1]/div[2]”查找元素
genrs=driver。通过xpath(“./*[@id='wrapper']/div/div/div[5]/div[1]/span[1]”查找元素
description=driver.find_element_by_xpath(“./*[@id='wrapper']/div/div/div[5]/div[9]/p”)
preimg=driver.find_element_by_xpath(“./*[@id='wrapper']/div/div/div[1]/div[1]/img”)
img=preimg.get_属性(“src”)
quallity=driver。通过xpath查找元素(“./*[@id='tab-content1']/div/div[3]/a/div[1]/p[2]”)
pretrailer=driver.find_element_by_xpath(“./*[@id='wrapper']/div/div/div[6]/ul/li/iframe”)
trailer=pretrailer.get_属性(“src”)
prelinks=driver.find_element_by_xpath(“./*[@id='tab-content1']]/div/div[3]/a”)
watchonclick=prelinks.get_属性(“onclick”)
watchlink=watchonclick.replace('open','location.replace'))
驱动程序。执行_脚本(watchlink)
find_div=driver.find_elements_by_xpath(“//div[@class='box']]/div[2]/a”)
对于find_div中的div:
链接到\u watch=div.get\u属性(“href”)
打破

打印(“质量:'%s”。%quallity.text)
如果要打印循环外的结果,必须将结果存储在某个位置:

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()

quality=[] #edited line

for x in range(1, 2):
    driver.get("http://sparo.live/movies?page=%d" % (x))
    text = driver.find_elements_by_xpath("//div[@class='boxALL']/article/a" )
    print (len(text))
    array = []
    info = []
    for link in text:
        links = link.get_attribute("href")
        array.append(links)

    for i in array:
        driver.get(i)
        title = driver.find_element_by_xpath(".//*[@id='wrapper']/div/div/div[1]/h1")
        english_title = driver.find_element_by_xpath(".//*[@id='wrapper']/div/div/div[1]/h2")
        year = driver.find_element_by_xpath(".//*[@id='wrapper']/div/div/div[1]/div[2]")
        geners = driver.find_element_by_xpath(".//*[@id='wrapper']/div/div/div[5]/div[1]/span[1]")
        description = driver.find_element_by_xpath(".//*[@id='wrapper']/div/div/div[5]/div[9]/p")
        preimg = driver.find_element_by_xpath(".//*[@id='wrapper']/div/div/div[1]/div[1]/img")
        img = preimg.get_attribute("src")
        quallity = driver.find_element_by_xpath(".//*[@id='tab-content1']/div/div[3]/a/div[1]/p[2]")
        quality.append(quallity.text)     #edited line
        pretrailer = driver.find_element_by_xpath(".//*[@id='wrapper']/div/div/div[6]/ul/li/iframe")
        trailer = pretrailer.get_attribute("src")
        prelinks = driver.find_element_by_xpath(".//*[@id='tab-content1']/div/div[3]/a")
        watchonclick = prelinks.get_attribute("onclick")
        watchlink = watchonclick.replace('open', 'location.replace')
        driver.execute_script(watchlink)
        find_div = driver.find_elements_by_xpath("//div[@class='box']/div[2]/a" )
        for div in find_div:
            links_to_watch = div.get_attribute("href")
            break
        for quality_type in quality:
            print(quality_type)
输出:

HD
HD
HD
HD
HD
HD
HD
HD
HD
BDRip

当然,如果代码曾经进入内部循环,
quallity
会被打印出来,您可以在循环后自由使用它。如果不是,那是因为
array
每次都有长度
0
,这只能是因为
text
同样有长度
0
。试着打印出这些变量,看看你是否发现了与预期不同的东西。我想你是
for
循环的忠实粉丝:)x在范围(1,2)中的
有什么意义?在第一次迭代后(在find_div
中的div的
中)中断循环有什么意义?@Andersson我正在学习我的第一个脚本,range1,2需要从X页转到Y页,但我正在调试,所以它只有1页。需要注意的是,检索循环中元素的文本才是成功的原因。如果您改为
quality.append(quallity)
则以后无法在qaulity:print(q.text)
中为
q执行此操作。原因是Selenium在被请求之前不会从页面获取数据。这意味着当一个新页面被导航到或其他东西使DOM发生变化时,元素不再有效。OP的代码在每个循环中加载一个页面,因此保存对元素的引用将不起作用