2

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

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')

这导致以下输出: 截屏

任何帮助都会很棒,谢谢

4

1 回答 1

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"

但更有可能您正在寻找链接文本和链接链接。您将被发送到的 URL(没有 Google 特殊 url 内容)位于cite元素中,链接文本位于a您已经找到的元素中。

于 2013-01-27T07:19:55.237 回答