从此网页“ https://meshb.nlm.nih.gov/treeView”开始,我要遍历树的每个节点,如果我在其项目中看到“心血管...”一词,我想创建字典,其中列出了顶级节点以及所有与心血管相关的项目。例如,在上一页中,您可以看到如果展开“解剖学[A]”,您将看到心血管。现在,如果您要扩展心血管功能,我希望它与心血管中包含的任何功能一起使用。我要遍历其某些元素的html页面的一部分如下:
<a class="ng-scope">
<span class="ng-binding ng-scope">Anatomy [A]</span>
</a>
<ul class="treeItem ng-scope">
<li class ="ng-scope" >
< a class ="ng-scope" href="/record/ui?ui=D001829" >
< span class ="ng-binding ng-scope" > Body Regions[A01] < / span >
</a>
</li>
< li class ="ng-scope" >
<a class ="ng-scope" href="/record/ui?ui=D001829" >
< span class ="ng-binding ng-scope" > Cardio Vascular< / span >
</a>
<ul class="treeItem ng-scope">
<li class="ng-scope">
<a class="ng-scope" href="/record/ui?ui=D015824">
<span class="ng-binding ng-scope">Blood-Air Barrier [A07.025]</span>
</a>
<ul class="treeItem ng-scope">
<li class="ng-scope">
<a class="ng-scope" href="/record/ui?ui=D018916">
<span class="ng-binding ng-scope">Blood-Aqueous Barrier [A07.030]</span>
</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
... 这是到目前为止我能够完成的!在Python中第一步,我想遍历顶级节点并找到“心血管..”一词,但我不断看到错误“没有这样的元素:无法找到元素”。有人可以告诉我我在这里想念什么吗?
from selenium import webdriver
chrome_path=r"G:\My Drive\A\chrome_driver\chromedriver_win32\chromedriver.exe"
driver=webdriver.Chrome(chrome_path)
driver.get('https://meshb.nlm.nih.gov/treeView')
for links in driver.find_elements_by_css_selector('a.ng-scope'):
cardio = links.find_element_by_css_selector('li>a>span.ng-binding.ng-scope')
print(cardio.text)
答案 0 :(得分:0)
您的代码中存在一些问题。除非单击父节点上的“ +”图标,否则无法迭代列表。
在您的代码中,我可以看到您创建了一个包含父节点(如解剖学,生物体等)的列表,但您没有编写代码来扩展该列表。
您必须遵循的步骤是:
我已经为您创建了涵盖第1,第2和第3步的代码。请以相同的方式进行。
from selenium import webdriver
chrome_path=r"G:\MyDrive\A\chrome_driver\chromedriver_win32\chromedriver.exe"
driver=webdriver.Chrome(chrome_path)
driver.get('https://meshb.nlm.nih.gov/treeView')
for links in driver.find_elements_by_css_selector('a.ng-scope'):
links.find_element_by_xpath("./following-sibling::span/i[1]").click();
for sublinks in links.find_elements_by_xpath('./following-sibling::ul/li//a'):
print(sublinks.text)
我有Java背景,请原谅我与语言相关的语法问题。