我想从this page
获取来自此http://openinnovation.cn/node/****
的网址的地址
这是一个片段:
<div class="views-row views-row-2 views-row-even">
<span class="views-field views-field-title">
<span class="field-content">
<a href="http://simile.mit.edu/wiki/Babel" target="_blank">babel</a>
</span>
</span>
<span class="views-field views-field-nothing">
<span class="field-content"><a href="http://openinnovation.cn/node/9506">详细信息</a>
</span>
</span>
</div>
我想要的是这个字符串“http://openinnovation.cn/node/9506”
我尝试了几种方法,但都失败了,其中一种方法都失败了。我是一个新手,只知道如何选择我从codecademy学习的课程,ID和其他人。
infoURL = page_html.cssselect(".views-field views-field-nothing, .field-content, a.attrib['href']")
以下是相关功能:
def main():
for j in range(58,64):
listURL = 'http://www.openinnovation.cn/opentools/function/'+str(j)
listPage = urllib.urlopen(listURL)
listhtml = listPage.read()
page_html = lxml.html.fromstring(listhtml)
# get the information page url from the list page:
#infoURL = page_html.cssselect("a.ttrib['href']")
infoURL = page_html.cssselect(".views-field views-field-nothing, .field-content, a.attrib['href']")
for e in infoURL:
print e
非常感谢!
答案 0 :(得分:1)
根据您要选择节点的具体方式,您可以使用
.views-row > span:nth-of-type(2) a
选择第二个范围中的链接或
a[href*='//openinnovation.cn/node/']
选择其href
属性中包含特定字符串的所有链接。这使用attribute*='string'
属性选择器,您可以阅读有关here的更多信息。 CSS没有XPath那么强大,因此您无法直接选择href
属性。您必须使用lxml API从e
显式获取属性:
infoURLs = page_html.cssselect("a[href*='//openinnovation.cn/node/']")
for urlNode in infoURLs:
print urlNode.get("href")