抓取 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...")

希望对您有所帮助