tree.xpath () возвращает пустой список в Webscrapping с использованием библиотеки l xml - PullRequest
0 голосов
/ 09 мая 2020

Когда вы go на: https://www.youtube.com/feed/trending

3 кнопки: musi c появляются игровые фильмы

я хотел выбрать музыку c тег элемента <a>. чтобы я мог извлечь из него значение href. Я использовал приведенный ниже код, но он продолжает выдавать пустой список.


from urllib.request import urlopen
from lxml import etree

url =  "https://www.youtube.com/feed/trending"

response = urlopen(url)
htmlparser = etree.HTMLParser()
tree = etree.parse(response, htmlparser)
print(tree.xpath('//*[@id="contents"]/ytd-channel-list-sub-menu-avatar-renderer[1]/a'))

1 Ответ

0 голосов
/ 21 июня 2020

Вы можете использовать селен, если запросы не работают. Я пробовал использовать селен со своей стороны, и он работает безупречно. Ниже приведен код, на который вы можете обратиться.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import *
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support import expected_conditions as EC


URL = "https://www.youtube.com/feed/trending"

chrome_options = Options()
driver = webdriver.Chrome("./chromedriver/chromedriver.exe", options=chrome_options)#download chrome driver and add path here.
driver.maximize_window()

driver.get(URL)

wait1 = WebDriverWait(driver, 200)
wait1.until(EC.presence_of_element_located((By.XPATH, '//*[@id="img"]')))
print('-' * 100)
print(driver.find_element_by_xpath('//*[@id="contents"]/ytd-channel-list-sub-menu-avatar-renderer[1]/a').get_attribute('href'))
print('-' * 100)

URL, полученный из тега привязки

...