【发布时间】:2020-11-06 19:33:13
【问题描述】:
Python 和 Selenium 的新手。尝试获取与 xpath 或 css_selector 匹配的元素列表并提取链接文本。搜索并尝试了许多变体,但我尝试过的所有内容都返回一个空列表。显然没有使用正确的 xpath 或 css_selector 值。
试图找到这个元素...
<a class="tablelink" onclick="this.blur(); return true;" href="viewoffender.do?method=view&offenderID=0673237&searchLastName=FOSTER&searchFirstName=BEVAN&searchDOBRange=0&listurl=pagelistoffendersearchresults&listpage=1">0673237</a>
这些都试过了……
elements = driver.find_elements_by_css_selector('a[href="viewoffender.do"]')
elements = driver.find_elements_by_css_selector("[href='%viewoffender.do']")
elements = driver.find_elements_by_xpath('//a[contains(@href, "viewoffender.do")]')
elements = driver.find_elements_by_xpath("/html/body/div/div[6]/div/table[2]/tbody/tr[3]/td[1]/a")
elements = driver.find_elements_by_css_selector(".tableRowEven > td:nth-child(1) > a:nth-child(1)")
elements = driver.find_elements_by_xpath("//*[starts-with(@id, 'link-viewoffender.do')]")
这里是 HTML 页面...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<noscript>
<meta http-equiv="refresh" content="1; url=javascriptdisabled.html">
</noscript>
</head>
<body>
<base href="https://webapps.doc.state.nc.us/opi/">
<title>NC DPS Offender Public Information</title>
<script type="text/javascript" src="scripts/DHTMLmessages.js"></script>
<!--<script type="text/javascript" src="scripts/contextmenu.js"></script>-->
<script type="text/javascript">
<!--
if (screen.width < 1024) {
if (document.all) {
document.write('<link rel="stylesheet" type="text/css" href="styles/opi800IE.css">');
}
else if (document.getElementById) {
document.write('<link rel="stylesheet" type="text/css" href="styles/opi800.css">');
}
}
else {
if (document.all) {
document.write('<link rel="stylesheet" type="text/css" href="styles/opi1024IE.css">');
}
else if (document.getElementById) {
document.write('<link rel="stylesheet" type="text/css" href="styles/opi1024.css">');
}
}
function showCalendar(dateField) {
if (document.all) {
window.dateField = dateField;
var windowArguments = new Object();
windowArguments.dateField = dateField;
var sFeatures = "dialogHeight:330px; dialogWidth:250px; help:off; unadorned:yes; status:no; ";
var answer = window.showModalDialog('/opi/calendar.html',windowArguments,sFeatures);
if (typeof(answer) != "undefined") {
dateField.value = answer;
}
}
else if (document.getElementById) {
returnDate(dateField,null);
window.open('/opi/calendar.html','Calendar - Choose a Date','toolbar=0,location=0,status=0,menubar=0,scrollbars=0,resizable=0,width=250px,height=330px');
}
}
var mydate;
function returnDate(dateField, newdate) {
if (dateField != null) {
mydate = dateField;
}
if (newdate != null && mydate != null) {
mydate.value = newdate;
}
}
function displayReport(url) {
if (document.all) {
document.all("reportframe").src = "report.html?url=" + url + "?method=runreport";
}
else if (document.getElementById) {
document.getElementById("reportframe").src = "report.html?url=" + url + "?method=runreport";
}
}
// -->
</script>
<div id="mainpage">
<div id="banner">
<div id="centercontent"><center><br>North Carolina Department Of Public Safety<br>Offender Public Information</center></div>
</div>
<div id="box">
<div id="tabs">
<ul>
<li><a href="offendersearch.do?method=view"><span>Offender Search</span></a></li>
<li><a href="offenderescapesearch.do?method=view"><span>Escapes/Captures</span></a></li>
<li><a href="offenderabscondsearch.do?method=view"><span>Absconders</span></a></li>
<li><a href="offenderreleasesearch.do?method=view"><span>Inmate Releases</span></a></li>
<li><a href="downloads.do?method=view"><span>Downloads</span></a></li>
</ul>
</div>
</div>
<div class="seal"> </div>
<div class="help"><a href="help.do"><img src="images/find.ico" border="0" alt="Got Questions?"></a></div>
<script type="text/javascript" src="scripts/dragiframe.js"></script>
<div class="titlediv"><center>Offender Search Results</center></div>
<div class="maindiv"><br>
<div class="resultspanel">
<table width="100%" cellspacing="2" cellpadding="5" class="displaytable">
<tr align="center">
<td align="center">
<a href="offendersearch.do?method=review&searchLastName=FOSTER&searchFirstName=BEVAN&searchDOBRange=0" class="actionbutton">Modify Search</a>
<a href="offendersearch.do?method=view" class="actionbutton">New Search</a>
</td>
</tr>
</table>
<table class="resultstable" width="100%" border="0" cellspacing="1" cellpadding="0">
<tr><td width="100%" colspan="9"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr class="tableRowAction"><td align="left" valign="bottom" class="tableCellAction">2 offenders found, displaying 1 to 2</td>
<td valign="bottom" align="right" class="tableCellAction">
<b>1</b></td>
</tr></table></td></tr>
<tr class="tableRowHeader"><th valign="bottom" width="5%" align="center" class="tableCellHeader"><a href="pagelistoffendersearchresults.do?method=list&searchLastName=FOSTER&searchFirstName=BEVAN&searchDOBRange=0&order=asc&sort=0" class="tableCellHeader">Offender Number</th>
<th valign="bottom" width="10%" align="left" class="tableCellHeader"><a href="pagelistoffendersearchresults.do?method=list&searchLastName=FOSTER&searchFirstName=BEVAN&searchDOBRange=0&order=asc&sort=1" class="tableCellHeader"><br>Last Name</th>
<th valign="bottom" width="5%" align="left" class="tableCellHeader"><a href="pagelistoffendersearchresults.do?method=list&searchLastName=FOSTER&searchFirstName=BEVAN&searchDOBRange=0&order=asc&sort=2" class="tableCellHeader"><br>Name<br>Suffix</th>
<th valign="bottom" width="10%" align="left" class="tableCellHeader"><a href="pagelistoffendersearchresults.do?method=list&searchLastName=FOSTER&searchFirstName=BEVAN&searchDOBRange=0&order=asc&sort=3" class="tableCellHeader"><br>First Name</th>
<th valign="bottom" width="5%" align="left" class="tableCellHeader"><a href="pagelistoffendersearchresults.do?method=list&searchLastName=FOSTER&searchFirstName=BEVAN&searchDOBRange=0&order=asc&sort=4" class="tableCellHeader">Middle Name</th>
<th valign="bottom" width="8%" align="left" class="tableCellHeader"><a href="pagelistoffendersearchresults.do?method=list&searchLastName=FOSTER&searchFirstName=BEVAN&searchDOBRange=0&order=asc&sort=5" class="tableCellHeader"><br>Gender</th>
<th valign="bottom" width="8%" align="left" class="tableCellHeader"><a href="pagelistoffendersearchresults.do?method=list&searchLastName=FOSTER&searchFirstName=BEVAN&searchDOBRange=0&order=asc&sort=6" class="tableCellHeader"><br>Race</th>
<th valign="bottom" width="5%" align="left" class="tableCellHeader"><a href="pagelistoffendersearchresults.do?method=list&searchLastName=FOSTER&searchFirstName=BEVAN&searchDOBRange=0&order=asc&sort=7" class="tableCellHeader"><br>Birth Date</th>
<th valign="bottom" width="5%" align="left" class="tableCellHeader"><a href="pagelistoffendersearchresults.do?method=list&searchLastName=FOSTER&searchFirstName=BEVAN&searchDOBRange=0&order=asc&sort=8" class="tableCellHeader"><br>Age</th>
</tr>
<tr class="tableRowOdd">
<td class="tablelink" width="5%" align="center" nowrap valign="top"><a class="tablelink" onclick="this.blur(); return true;" href="viewoffender.do?method=view&offenderID=0673237&searchLastName=FOSTER&searchFirstName=BEVAN&searchDOBRange=0&listurl=pagelistoffendersearchresults&listpage=1">0673237</a></td>
<td class="tableCell" width="10%" align="left" nowrap valign="top">FOSTER </td>
<td class="tableCell" width="5%" align="left" nowrap valign="top"> </td>
<td class="tableCell" width="10%" align="left" nowrap valign="top">BEVAN </td>
<td class="tableCell" width="5%" align="left" nowrap valign="top"> </td>
<td class="tableCell" width="8%" align="left" nowrap valign="top">MALE</td>
<td class="tableCell" width="8%" align="left" nowrap valign="top">BLACK</td>
<td class="tableCell" width="5%" align="left" nowrap valign="top">05/02/1977</td>
<td class="tableCell" width="5%" align="left" nowrap valign="top">43 </td>
</tr>
<tr class="tableRowEven">
<td class="tablelink" width="5%" align="center" nowrap valign="top"><a class="tablelink" onclick="this.blur(); return true;" href="viewoffender.do?method=view&offenderID=0673237&searchLastName=FOSTER&searchFirstName=BEVAN&searchDOBRange=0&listurl=pagelistoffendersearchresults&listpage=1">0673237</a></td>
<td class="tableCell" width="10%" align="left" nowrap valign="top">FOSTER </td>
<td class="tableCell" width="5%" align="left" nowrap valign="top"> </td>
<td class="tableCell" width="10%" align="left" nowrap valign="top">BEVAN </td>
<td class="tableCell" width="5%" align="left" nowrap valign="top">J</td>
<td class="tableCell" width="8%" align="left" nowrap valign="top">MALE</td>
<td class="tableCell" width="8%" align="left" nowrap valign="top">BLACK</td>
<td class="tableCell" width="5%" align="left" nowrap valign="top">05/02/1977</td>
<td class="tableCell" width="5%" align="left" nowrap valign="top">43 </td>
</tr>
</table>
</div>
</div>
<div class="bottomdiv">
<table align="center" cellpadding="0" cellspacing="1">
<tr>
<td colspan="2">
</td>
</tr>
<tr>
<td align="left" valign="top" width="24%">
<a href="http://www.nc.gov"><img src="images/logo_ncgov_110x37.gif" alt="North Carolina - A better place to be, www.nc.gov" width="112" height="40" border="0"></a></td>
<td valign="top" align="left" width="76%">
<span style="white-space:nowrap">
<a class="footerlink" href="privacy.do">Privacy Policy</a>
<a class="footerlink" href="disclaimer.do">Disclaimer</a>
<a class="footerlink" href="contact.do">Contact Us</a>
<a class="footerlink" href="help.do">Help Using This Site</a>
</span>
<span class="copyright" style="font-weight: bold; font-size: 12px;"><br>© 2012 North Carolina Department Of Public Safety. All rights reserved.</span>
</td>
</tr>
</table>
</div>
</div>
</body>
</html>
【问题讨论】:
-
请编辑问题并添加相关的 HTML。虽然外部链接现在可能有用,但如果它在未来失效,这个问题实际上是没有用的。此外,您的共享链接需要我们请求访问权限,因此此时它真的没有用。