Python和Selenium初学者。我正在努力拼凑全班一节课的题目。我试过使用find\u elements\u by\u class\u name和其他方法,但由于某些原因,只会返回部分数据。你知道吗
我正在刮的页面:https://www.udemy.com/selenium-webdriver-with-python3/
1)我想得到章节的标题。它们是粗体的标题。你知道吗
2)我想得到子章节的标题。你知道吗
from selenium import webdriver
driver = webdriver.Chrome()
url = 'https://www.udemy.com/selenium-webdriver-with-python3/'
driver.get(url)
main_titles = driver.find_elements_by_class_name("lecture-title-text")
sub_titles = driver.find_elements_by_class_name("title")
问题
1)使用主标题,我得到的长度只有10。它只从介绍到模块。处理文件和文件终究不会出来。但是,类名完全相同。不知道为什么不是。模块/与文件一起工作基本上是分界点。检查中的元素在这一点上看起来也不同。它们都有相同的span class标记,但不确定为什么只返回partial
<span class="lecture-title-text">
Element Inspection between Modules title and WorkingWithFiles title
在这一点上,webscrape崩溃了。不知道为什么。你知道吗
2)使用子标题,我得到的长度是58项,但当我打印出来时,我只得到前两项:
Introduction
How to reach me anytime and ask questions? *** MUST WATCH ***
在这之后,都是空行。不知道为什么只有前两名,而不是其他所有的标签都有
<div class='title'>
也许我可以尝试使用BeautifulSoup,但目前我正在尝试更好地使用Selenium。有没有一个动态内容扔掉硒刮或我刮它在一个适当的方式?你知道吗
谢谢你们的意见。抱歉,邮件太长了。我想确保我描述的问题是正确的。你知道吗
好的,我已经把评论中的建议看了一遍,已经解决了。我把它写在这里,以防将来有人想看看这个解决方案是怎么回事。你知道吗
1)使用建议,我发出了一个命令,点击“24个更多部分”展开选项卡,然后将其刮除,效果非常好!你知道吗
这就扯掉了所有34个章节的标题。你知道吗
2)根据Matt的建议,我找到了WebElement,并使用get_属性('textContent')提取文本数据。有很多空格,所以我使用split()只获取字符串。你知道吗
这把所有的头衔都扯了!你知道吗
之所以你只得到前10节课,是因为只有前10节课显示。您可能已登录到浏览器,因此当您要签出它时,它会显示每个部分。但对我和你的刮刀来说,它只显示前10个。在查找标题之前,您需要单击
.section-container more-sections
按钮。你知道吗至于
title
没有被正确地刮取的奇怪情况:这是因为当一个元素被隐藏时text
属性总是未定义的,这就是为什么它只适用于第一个部分。我会尝试使用WebElement.get_attribute('textContent')
来刮取文本。你知道吗相关问题 更多 >
编程相关推荐