如何从抽搐网页中收集剪辑的链接?
我想从twitch目录中获取所有视频片段的链接,例如 this
我尝试了BeautifulSoup的请求失败,然后使用lxml的请求也失败了。
我尝试了硒webdriver通过xpath查找剪辑链接,然后单击每个
driver.find_element_by_xpath('__')。click()
但是即使xpath表达式正确也失败了。
如何从抽搐网页中收集剪辑的链接?请帮忙。
答案 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...")
我希望对您有帮助