从最后一个超链接标记获取文本

时间:2018-01-18 11:00:27

标签: python html python-3.x selenium selenium-webdriver

我正在尝试访问超链接文本,这些文本将始终存储为嵌套在某个网站上的100 div标签中的最后一个超链接标记。在下面的例子中,“00A17”将是我试图从单个标签中提取的内容。

HTML代码:

<div class="headlineText">
  <a class="mrnum" title="Full MathSciNet Item" href="/mathscinet/search/publdoc.html?arg3=&amp;co4=AND&amp;co5=AND&amp;co6=AND&amp;co7=AND&amp;dr=all&amp;extend=1&amp;l=100&amp;pg4=AUCN&amp;pg5=TI&amp;pg6=PC&amp;pg7=ALLF&amp;pg8=ET&amp;review_format=html&amp;s4=&amp;s5=&amp;s6=&amp;s7=%22Featured%20Review%22&amp;s8=Journals&amp;sort=Newest&amp;vfpref=html&amp;yearRangeFirst=&amp;yearRangeSecond=&amp;yrop=eq&amp;r=9&amp;mx-pid=2650657"><strong>MR2650657</strong></a>
  <a class="item_status" href="/mathscinet/help/fullitem_help_full.html#indexed"><span>Indexed</span></a>
  <a href="/mathscinet/search/author.html?mrauthid=115370">Logan, J. David</a> <span class="title"><span class="searchHighlight">Featured review</span>: <span class="it">Introduction to the foundations of applied mathematics</span> [<a href="/mathscinet/search/publdoc.html?pg1=MR&amp;s1=2526777&amp;loc=fromrevtext">MR2526777</a>].</span>
  <a href="/mathscinet/search/journaldoc.html?id=5174"> <em>SIAM Rev.</em></a> <a href="/mathscinet/search/publications.html?pg1=ISSI&amp;s1=281478"> 52 </a>
  <a href="/mathscinet/search/publications.html?pg1=ISSI&amp;s1=281478"> (2010), </a>
  <a href="/mathscinet/search/publications.html?pg1=ISSI&amp;s1=281478"> no. 1,</a> 173–178.
  <a href="/mathscinet/search/mscdoc.html?code=00A17">00A17</a>
</div>

我写的代码尝试这基本上是一团糟

用于远程访问的Python代码:

headlineTexts = []
mscLinks = []
for x in range(2,102):
    headlineTexts.extend(driver.find_elements_by_xpath("//*[@id='content']/form/div[3]/div[2]/div/div/div[%d]/div[2]"%x))
    mscLinks.extend(headlineTexts[x-2].find_elements_by_tag_name("a")[last()])

基本上,有100个“headlineText”div标签(索引从2到101),我需要从每个标签中获取上述超链接文本(因此迭代)。我基本上创建了headlineText元素的列表,然后对于每个headlineText元素,我试图提取标签名为“a”的最后一个子元素。不幸的是,当我尝试运行时,我得到了一个

  

TypeError:'WebElement'对象不可迭代

这对我来说很奇怪,因为我只使用复数find_elements()并且应该生成一个可迭代列表。我可能错误地使用last()吗?

1 个答案:

答案 0 :(得分:4)

检索将始终存储为嵌套在某个网站上的100 div标签中的最后一个超链接标记的超链接文本,例如 00A17 您可以使用以下代码行:

print(driver.find_element_by_xpath("div[@class='headlineText']//a[last()]").get_attribute("innerHTML"))