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"

ただし、リンクテキストとリンクリンクを探している可能性が高くなります。Googleの特別なURLを含まない、送信先のURLはcite要素にあり、リンクテキストはa既に見つけた要素にあります。

于 2013-01-27T07:19:55.237 に答える