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

时间:2019-02-05 19:18:11

标签: python selenium web-scraping twitch

如何从抽搐网页中收集剪辑的链接?

我想从twitch目录中获取所有视频片段的链接,例如 this

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

我尝试了硒webdriver通过xpath查找剪辑链接,然后单击每个

  

driver.find_element_by_xpath('__')。click()

但是即使xpath表达式正确也失败了。

如何从抽搐网页中收集剪辑的链接?请帮忙。

1 个答案:

答案 0 :(得分:1)

您可以使用以下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...")

我希望对您有帮助