【发布时间】:2015-12-14 15:17:46
【问题描述】:
我正在尝试提取 Lynda.com 提供的所有课程的名称以及该主题,以便它在我的列表中显示为“2D 绘图——Soane 项目:与 Paul F. Aubin 一起使用 BIM 恢复失落的纪念碑” '。因此,我正在尝试编写一个脚本,该脚本将针对http://www.lynda.com/sitemap/categories 上的每个主题并拉出课程列表。我已经设法让 Selenium 从一个主题转到另一个主题并拉动课程。我唯一的问题是有一个“查看更多课程”按钮可以查看其余课程。有时您必须单击它几次,这就是我使用 while 循环的原因。但是 selenium 似乎没有执行这个点击。有谁知道为什么?
这是我的代码:
from selenium import webdriver
url = 'http://www.lynda.com/sitemap/categories'
mydriver = webdriver.Chrome()
mydriver.get(url)
course_list = []
for a in [1,2,3]:
for b in range(1,73):
mydriver.find_element_by_xpath('//*[@id="main-content"]/div[2]/div[3]/div[%d]/ul/li[%d]/a' % (a,b)).click()
while True:
#click the button 'See more results' as long as it´s available
try:
mydriver.find_element_by_xpath('//*[@id="main-content"]/div[1]/div[3]/button').click()
except:
break
subject = mydriver.find_element_by_tag_name('h1') # pull out the subject
courses = mydriver.find_elements_by_tag_name('h3') # pull out the courses
for course in courses:
course_list.append(str(subject.text)+" -- " + str(course.text))
# go back to the initial site
mydriver.get(url)
【问题讨论】:
-
在尝试单击按钮时是否收到
ElementNotFound异常? -
不,它只是完全跳过它并返回主题列表。
-
哦...当然))您的
except捕获所有异常)尝试从Python shell“单击”您的按钮。似乎 webdriver 找不到此按钮,因为它不可见。您需要先向下滚动才能“看到”按钮 -
如果您不确定可能出现的问题,我建议您首先从 Python shell 管理您的命令
标签: python-3.x selenium web-scraping