抓取 twitch 目录中的所有剪辑链接
scraping all links of clips in twitch directory
我如何从 twitch 网页收集剪辑链接?
我想从 twitch 目录中获取所有视频剪辑的链接,例如
this
我尝试使用 BeautifulSoup 请求,失败,然后使用 lxml 请求,也失败。
我尝试使用 selenium webdriver 通过 xpath 查找剪辑链接并单击每个
driver.find_element_by_xpath('__').click()
尽管 xpath 表达式正确,但也失败了。
我如何从 twitch 网页收集剪辑链接?请帮忙
您可以使用以下 XPath 识别视频剪辑网址:
xpath = //a[@data-a-target='preview-card-image-link']
但上面的内容只会定位前 20 个网址,之后您需要向下滚动,以便从那里动态加载。要获取前 20 个网址,您可以尝试以下代码:
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...")
希望对您有所帮助
我如何从 twitch 网页收集剪辑链接?
我想从 twitch 目录中获取所有视频剪辑的链接,例如 this
我尝试使用 BeautifulSoup 请求,失败,然后使用 lxml 请求,也失败。
我尝试使用 selenium webdriver 通过 xpath 查找剪辑链接并单击每个
driver.find_element_by_xpath('__').click()
尽管 xpath 表达式正确,但也失败了。
我如何从 twitch 网页收集剪辑链接?请帮忙
您可以使用以下 XPath 识别视频剪辑网址:
xpath = //a[@data-a-target='preview-card-image-link']
但上面的内容只会定位前 20 个网址,之后您需要向下滚动,以便从那里动态加载。要获取前 20 个网址,您可以尝试以下代码:
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...")
希望对您有所帮助