如何从页面获取特殊网址?

时间:2014-05-20 06:07:57

标签: python css-selectors

我想从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

非常感谢!

1 个答案:

答案 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")