lxml解析谷歌搜索结果

时间:2013-01-27 02:28:23

标签: python lxml

我正在尝试解析谷歌搜索结果中的链接,最终得到奇怪的输出。

import mechanize, re, lxml.html
from lxml.html import parse
br = mechanize.Browser()
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1)     Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 
br.set_handle_robots(False)
url = 'https://www.google.com/search?q=test&gl=US'

response = br.open(url)
html = response.read().lower()

doc = lxml.html.document_fromstring(html)

for t in doc.xpath("//h3[@class='r']/a"):
    print t.get('href')

导致以下输出: Screenshot http://i46.tinypic.com/2pt8ord.png

任何帮助都会很棒, 感谢

1 个答案:

答案 0 :(得分:0)

你在这里想要达到的目标并不完全清楚,因为你得到的正是你所要求的。

<h3 class="r">
  <a href="/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;cad=rja&amp;ved=0CDUQFjAA&amp;url=http%3A%2F%2Fwww.test.com%2F&amp;ei=bdMEUYXiBefS2AXL5oGoBQ&amp;usg=AFQjCNH21KLjC0CBkjon2DwD_CZ0HApLMw&amp;sig2=KeRdw0_WAGc2Zrz1jI49wQ&amp;bvm=bv.41524429,d.b2I" 
  class="l" 
  onmousedown="return rwt(this,'','','','1','AFQjCNH21KLjC0CBkjon2DwD_CZ0HApLMw','KeRdw0_WAGc2Zrz1jI49wQ','0CDUQFjAA','','',event)">
    <em>Test</em>.com
  </a>
</h3>

您获得了内部href标记的a属性,该标记来自:

"/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;cad=rja&amp;ved=0CDUQFjAA&amp;url=http%3A%2F%2Fwww.test.com%2F&amp;ei=bdMEUYXiBefS2AXL5oGoBQ&amp;usg=AFQjCNH21KLjC0CBkjon2DwD_CZ0HApLMw&amp;sig2=KeRdw0_WAGc2Zrz1jI49wQ&amp;bvm=bv.41524429,d.b2I"

但更有可能您正在寻找链接文本和链接链接。您将发送到的网址没有Google特殊网址,位于cite元素中,链接文字位于您已找到的a元素中。