如何使用lxml、XPath和Python从网页中提取链接?

如何使用lxml、XPath和Python从网页中提取链接?,python,screen-scraping,hyperlink,lxml,extraction,Python,Screen Scraping,Hyperlink,Lxml,Extraction,我有一个xpath查询: /html/body//tbody/tr[*]/td[*]/a[@title]/@href 它提取所有带有title属性的链接,并在中给出href 但是,我似乎无法将它与lxml一起使用 from lxml import etree parsedPage = etree.HTML(page) # Create parse tree from valid page. # Xpath query hyperlinks = parsedPage.xpath("/html/

我有一个xpath查询:

/html/body//tbody/tr[*]/td[*]/a[@title]/@href
它提取所有带有title属性的链接,并在中给出
href

但是,我似乎无法将它与
lxml
一起使用

from lxml import etree
parsedPage = etree.HTML(page) # Create parse tree from valid page.

# Xpath query
hyperlinks = parsedPage.xpath("/html/body//tbody/tr[*]/td[*]/a[@title]/@href") 
for x in hyperlinks:
    print x # Print links in <a> tags, containing the title attribute
从lxml导入etree
parsedPage=etree.HTML(页面)#从有效页面创建解析树。
#Xpath查询
hyperlinks=parsedPage.xpath(“/html/body//tbody/tr[*]/td[*]/a[@title]/@href”)
对于超链接中的x:
打印x#打印标签中包含标题属性的链接
这不会从
lxml
(空列表)产生任何结果


如何获取Python下包含属性标题的超链接的
href
文本(链接)以及
lxml

from lxml import html, etree
from StringIO import StringIO

html_string = '''<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
<head/>
<body>
    <table border="1">
      <tbody>
        <tr>
          <td><a href="http://stackoverflow.com/foobar" title="Foobar">A link</a></td>
        </tr>
        <tr>
          <td><a href="http://stackoverflow.com/baz" title="Baz">Another link</a></td>
        </tr>
      </tbody>
    </table>
</body>
</html>'''

tree = etree.parse(StringIO(html_string))
print tree.xpath('/html/body//tbody/tr/td/a[@title]/@href')

>>> ['http://stackoverflow.com/foobar', 'http://stackoverflow.com/baz']
从lxml导入html,etree
从StringIO导入StringIO
html_字符串=“”
'''
tree=etree.parse(StringIO(html_字符串))
print tree.xpath('/html/body//tbody/tr/td/a[@title]/@href'))
>>> ['http://stackoverflow.com/foobar', 'http://stackoverflow.com/baz']
当Firefox呈现html时,会将其转换为html,这使得firebug工具返回的xpath与服务器返回的实际html(以及urllib/2将返回的内容)不一致


删除
标记通常会起作用。

您正在解析的文档是否设置了名称空间(xmlns)?