【问题标题】:lxml parsing google search resultslxml解析google搜索结果
【发布时间】:2013-01-27 02:28:23
【问题描述】:

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

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

导致以下输出:

任何帮助都会很棒, 谢谢

【问题讨论】:

    标签: python lxml


    【解决方案1】:

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

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

    您将获得内部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"
    

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

    【讨论】:

    • 哦,你是对的——已经很晚了;)。是的,我正在寻找链接和文本。但是当我将代码更改为:doc.xpath("//div[@class='f kv']/cite") 时,我得到空输出。我做错了吗
    • 试试fkv之间的句号,也许
    • /cite 不会返回确切的 URL,如果它太长,它会在 URL 内返回“...”。
    猜你喜欢
    • 2010-12-05
    • 2023-03-29
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 2014-10-14
    • 1970-01-01
    相关资源
    最近更新 更多