python mechanize find_link找到最终的匹配链接

时间:2011-04-01 12:00:43

标签: python mechanize

我的文章中有一个带有> = 1链接的页面,显示“显示费用”。 我可以找到第一个这样的链接

firstLink = br.find_link(text_regex=re.compile("Display charges"),nr=0)

我希望能够找到最终的链接。我希望这会起作用

lastLink = br.find_link(text_regex=re.compile("Display charges"),nr=-1)

但是在只有一个匹配链接的情况下,它就失败了。

请注意:Python和机械化初学者但已发现帮助(mechanize.Browser),这是一个重大突破:)

1 个答案:

答案 0 :(得分:7)

您可以使用br.links()生成所有此类链接,然后使用list(...)[-1]选择最后一个:

lastLink = list(br.links(text_regex=re.compile("Display charges")))[-1]

例如:

In [29]: import mechanize

In [30]: import re

In [31]: br=mechanize.Browser()

In [32]: br.open('http://www.example.com')
Out[32]: <response_seek_wrapper at 0xa2b59ec whose wrapped object = <closeable_response at 0xa2b554c whose fp = <socket._fileobject object at 0xa3143ac>>>

In [33]: br.links()
Out[33]: <generator object __call__ at 0xa289af4>

In [34]: list(br.links())
Out[34]: 
[Link(base_url='http://www.iana.org/domains/example/', url='/', text='Homepage[IMG]', tag='a', attrs=[('href', '/')]),
 Link(base_url='http://www.iana.org/domains/example/', url='/domains/', text='Domains', tag='a', attrs=[('href', '/domains/')]),
 Link(base_url='http://www.iana.org/domains/example/', url='/numbers/', text='Numbers', tag='a', attrs=[('href', '/numbers/')]),
 Link(base_url='http://www.iana.org/domains/example/', url='/protocols/', text='Protocols', tag='a', attrs=[('href', '/protocols/')]),
 Link(base_url='http://www.iana.org/domains/example/', url='/about/', text='About IANA', tag='a', attrs=[('href', '/about/')]),
 Link(base_url='http://www.iana.org/domains/example/', url='/go/rfc2606', text='RFC 2606', tag='a', attrs=[('href', '/go/rfc2606')]),
 Link(base_url='http://www.iana.org/domains/example/', url='/about/', text='About', tag='a', attrs=[('href', '/about/')]),
 Link(base_url='http://www.iana.org/domains/example/', url='/domains/', text='Domains', tag='a', attrs=[('href', '/domains/')]),
 Link(base_url='http://www.iana.org/domains/example/', url='/protocols/', text='Protocols', tag='a', attrs=[('href', '/protocols/')]),
 Link(base_url='http://www.iana.org/domains/example/', url='/numbers/', text='Number Resources', tag='a', attrs=[('href', '/numbers/')]),
 Link(base_url='http://www.iana.org/domains/example/', url='http://www.icann.org/', text='Internet Corporation for Assigned Names and Numbers', tag='a', attrs=[('href', 'http://www.icann.org/')]),
 Link(base_url='http://www.iana.org/domains/example/', url='mailto:iana@iana.org?subject=General%20website%20feedback', text='iana@iana.org', tag='a', attrs=[('href', 'mailto:iana@iana.org?subject=General%20website%20feedback')])]

In [35]: list(br.links(text_regex=re.compile("About")))
Out[35]: 
[Link(base_url='http://www.iana.org/domains/example/', url='/about/', text='About IANA', tag='a', attrs=[('href', '/about/')]),
 Link(base_url='http://www.iana.org/domains/example/', url='/about/', text='About', tag='a', attrs=[('href', '/about/')])]