我正在尝试解析谷歌搜索结果中的链接,最终得到奇怪的输出。
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
任何帮助都会很棒, 感谢
答案 0 :(得分:0)
你在这里想要达到的目标并不完全清楚,因为你得到的正是你所要求的。
<h3 class="r">
<a href="/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CDUQFjAA&url=http%3A%2F%2Fwww.test.com%2F&ei=bdMEUYXiBefS2AXL5oGoBQ&usg=AFQjCNH21KLjC0CBkjon2DwD_CZ0HApLMw&sig2=KeRdw0_WAGc2Zrz1jI49wQ&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&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CDUQFjAA&url=http%3A%2F%2Fwww.test.com%2F&ei=bdMEUYXiBefS2AXL5oGoBQ&usg=AFQjCNH21KLjC0CBkjon2DwD_CZ0HApLMw&sig2=KeRdw0_WAGc2Zrz1jI49wQ&bvm=bv.41524429,d.b2I"
但更有可能您正在寻找链接文本和链接链接。您将发送到的网址没有Google特殊网址,位于cite
元素中,链接文字位于您已找到的a
元素中。