выскабливать все ссылки клипов в каталоге twitch - PullRequest
0 голосов
/ 05 февраля 2019

Как мне собрать ссылки на клипы с веб-страницы Twitch?

Я хочу получить ссылки на все видеоклипы из каталога Twitch, например this

Я пытался запроситьс BeautifulSoup, не удалось, затем запросы с lxml, тоже не удалось.

Я попытался веб-драйверу selenium найти ссылки клипов по xpath и щелкнуть по каждой из них

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

, но тоже не удалось, несмотря на правильность выражений xpath.

Как собрать ссылки на клипы с веб-страницы с подергиванием?пожалуйста, помогите.

1 Ответ

0 голосов
/ 05 февраля 2019

Вы можете идентифицировать URL видеоклипа, используя следующую XPath:

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

Надеюсь, это поможет

...