Python 硒与&;在url中
我正在抓取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
问题可能是您没有等待在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)