使用Python lxml/beautiful soup查找网页上的所有链接
我正在写一个脚本,用来读取网页,并建立一个符合特定条件的链接数据库。现在我遇到了问题,主要是在使用lxml这个库时,不太明白怎么从HTML中提取所有的<a href>
链接...
result = self._openurl(self.mainurl)
content = result.read()
html = lxml.html.fromstring(content)
print lxml.html.find_rel_links(html,'href')
4 个回答
2
我想提供一个基于lxml的替代方案。
这个方案使用了lxml.cssselect中提供的一个函数。
import urllib
import lxml.html
from lxml.cssselect import CSSSelector
connection = urllib.urlopen('http://www.yourTargetURL/')
dom = lxml.html.fromstring(connection.read())
selAnchor = CSSSelector('a')
foundElements = selAnchor(dom)
print [e.get('href') for e in foundElements]
5
使用 iterlinks
,lxml 提供了一个非常棒的功能来完成这个任务。
这个功能会为每一个链接返回四个信息:元素、属性、链接和位置。这些链接可能出现在 action、archive、background、cite、classid、codebase、data、href、longdesc、profile、src、usemap、dynsrc 或 lowsrc 这些属性中。
15
使用XPath。可以试试类似这样的东西(我这边无法测试):
urls = html.xpath('//a/@href')