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 抓取twitch目录中剪辑的所有链接_Python_Selenium_Web Scraping_Twitch - Fatal编程技术网

Python 抓取twitch目录中剪辑的所有链接

Python 抓取twitch目录中剪辑的所有链接,python,selenium,web-scraping,twitch,Python,Selenium,Web Scraping,Twitch,如何从twitch网页收集剪辑链接 我想从twitch目录中获取所有视频剪辑的链接,如 我尝试了使用BeautifulSoup的请求,失败了,然后使用lxml的请求也失败了 我尝试使用SeleniumWebDriver通过xpath查找剪辑链接,并单击每个链接 驱动程序。通过xpath(“查找”)查找元素。单击() 尽管xpath表达式是正确的,但也失败了 如何从twitch网页收集剪辑链接?请提供帮助。您可以使用以下XPath识别视频剪辑URL: xpath = //a[@data-a-ta

如何从twitch网页收集剪辑链接

我想从twitch目录中获取所有视频剪辑的链接,如

我尝试了使用BeautifulSoup的请求,失败了,然后使用lxml的请求也失败了

我尝试使用SeleniumWebDriver通过xpath查找剪辑链接,并单击每个链接

驱动程序。通过xpath(“查找”)查找元素。单击()

尽管xpath表达式是正确的,但也失败了


如何从twitch网页收集剪辑链接?请提供帮助。

您可以使用以下XPath识别视频剪辑URL:

xpath = //a[@data-a-target='preview-card-image-link']
但是上面只会找到前20个URL,之后需要向下滚动,以便从那里动态加载。要获取前20个URL,您可以尝试以下代码:

from selenium import webdriver
from time import sleep
driver = webdriver.Chrome('C:\\NotBackedUp\\chromedriver.exe')
driver.get("https://www.twitch.tv/directory/game/Apex%20Legends/clips?fbclid=IwAR2xYPFh3Um2YS4EsDkjAdA0b-CMvjQTLVLeNW5D77-aPh3IqwW9c4e7lIM&range=24hr")
sleep(3)
links = driver.find_elements_by_xpath("//a[@data-a-target='preview-card-image-link']")
for link in links:
    print link.get_attribute('href')
如果通过检查手动计数,则该页面中有1020个剪辑。因此,下面的代码将向下滚动,直到加载所有剪辑并打印所有链接:

from selenium import webdriver
from time import sleep
driver = webdriver.Chrome('C:\\NotBackedUp\\chromedriver.exe')
driver.get("https://www.twitch.tv/directory/game/Apex%20Legends/clips?fbclid=IwAR2xYPFh3Um2YS4EsDkjAdA0b-CMvjQTLVLeNW5D77-aPh3IqwW9c4e7lIM&range=24hr")

sleep(3)
i = 1
while i <= 1020:
    links = driver.find_elements_by_xpath("//a[@data-a-target='preview-card-image-link']")
    driver.execute_script('arguments[0].scrollIntoView(true);', links[len(links)-1])
    print "=> i :", i
    i+=20
    sleep(1)

links = driver.find_elements_by_xpath("//a[@data-a-target='preview-card-image-link']")
for link in links:
    print link.get_attribute('href')

print("=> Done...")
从selenium导入webdriver
从时间上导入睡眠
driver=webdriver.Chrome('C:\\NotBackedUp\\chromedriver.exe')
驱动程序。获取(“https://www.twitch.tv/directory/game/Apex%20Legends/clips?fbclid=IwAR2xYPFh3Um2YS4EsDkjAdA0b-CMvjQTLVLeNW5D77-aPh3IqwW9c4e7lIM和范围=24小时)
睡眠(3)
i=1

我会先开始,然后再回来,当你陷入困境和/或有一些代码显示工作正常,但返回一个链接时,它不接受链接上的循环,是不是因为driver.find_element_by_xpath只返回第一次出现而不是list?这是什么意思?你能分享它返回的链接吗?对我来说,它返回了20个链接,这是
驱动程序。通过xpath(//a[@data-a-target='preview-card-image-link'])查找元素
不是
驱动程序。通过xpath()查找元素
元素
元素
之间有区别,所以使用
元素
是的,我错了,我忘了s,如何通过使用selenium向下滚动来获取其余链接?有解决方案吗?是的,你需要向下滚动并获取它