Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 硒与&;在url中_Python_Selenium_Web Scraping - Fatal编程技术网

Python 硒与&;在url中

Python 硒与&;在url中,python,selenium,web-scraping,Python,Selenium,Web Scraping,我正在抓取URL 上述功能正常,但在同一页面上有多个链接,即: 它给出了一个空的结果。同样适用于: 问题可能是您没有等待在DOM中加载元素 尝试这样做: 导入selenium webdriverwait from selenium.webdriver.support.ui import WebDriverWait 等待元素加载,然后再获取它们 elements = WebDriverWait(driver, 10).until(lambda driver: driver.find_el

我正在抓取URL

上述功能正常,但在同一页面上有多个链接,即:

它给出了一个空的结果。同样适用于:


问题可能是您没有等待在DOM中加载元素

尝试这样做:

导入selenium webdriverwait

from selenium.webdriver.support.ui import WebDriverWait
等待元素加载,然后再获取它们

elements = WebDriverWait(driver, 10).until(lambda driver: driver.find_elements_by_class_name('video-item'))                                   
for s in elements:
    print s.text
    video = {}
    videourl = s.find_element_by_css_selector('a').get_attribute('href')
    video['url'] = videourl
    videotitle = s.find_element_by_css_selector('a').get_attribute('alt')
    video['title'] = videotitle
    video_trend.append(video)
print video_trend
这个代码对我有用

driver = webdriver.Firefox()

class Test(object):
    url1 = "https://www.youtube.com/trendsdashboard#loc0=ind"
    url2 = "https://www.youtube.com/trendsdashboard#loc0=ind&feed=shared"
    url3 = "https://www.youtube.com/trendsdashboard#loc0=ind&feed=shared&gen0=male"

def get_video_trend(url):
    driver.get(url)
    assert "YouTube Trends" in driver.title
    video_trend = []
    element = WebDriverWait(driver, 10).until(lambda driver: driver.find_elements_by_class_name('video-item'))                                   
    for s in element:
        print (s.text)
        video = {}
        videourl = s.find_element_by_css_selector('a').get_attribute('href')
        video['url'] = videourl
        videotitle = s.find_element_by_css_selector('a').get_attribute('alt')
        video['title'] = videotitle
        video_trend.append(video)
    print (video_trend)

if __name__ == '__main__':
    get_video_trend(Test.url1)
    get_video_trend(Test.url2)
    get_video_trend(Test.url3)
driver = webdriver.Firefox()

class Test(object):
    url1 = "https://www.youtube.com/trendsdashboard#loc0=ind"
    url2 = "https://www.youtube.com/trendsdashboard#loc0=ind&feed=shared"
    url3 = "https://www.youtube.com/trendsdashboard#loc0=ind&feed=shared&gen0=male"

def get_video_trend(url):
    driver.get(url)
    assert "YouTube Trends" in driver.title
    video_trend = []
    element = WebDriverWait(driver, 10).until(lambda driver: driver.find_elements_by_class_name('video-item'))                                   
    for s in element:
        print (s.text)
        video = {}
        videourl = s.find_element_by_css_selector('a').get_attribute('href')
        video['url'] = videourl
        videotitle = s.find_element_by_css_selector('a').get_attribute('alt')
        video['title'] = videotitle
        video_trend.append(video)
    print (video_trend)

if __name__ == '__main__':
    get_video_trend(Test.url1)
    get_video_trend(Test.url2)
    get_video_trend(Test.url3)