2015-04-20 56 views
0

早上好! 我学Python和库抓取。 我想要使用Grab在Google中进行搜索。我有这样的代码我怎样才能做谷歌搜索,使用抓取

from grab import Grab 
g = Grab() 
g.go('https://www.google.com.ua/') 
g.doc.set_input("q","grab") 
g.doc.submit() 
print g.doc.select('//head/title').text() 

print g.doc.select('//h3[@class="r"]/a') 

而这个代码的结果是:

Grab - python фреймворк для парсинга сайтов 
<selection.selector_list.SelectorList object at 0x022F9E90> 

首先 '打印' 必须写 “抢 - Пошук谷歌”,isn`t呢?但它显示结果,必须写第二个'打印'。 这是怎么回事?

+0

这将是非常巨大的,如果你考虑使用普通的英语例子,告诉我们你所期望的。否则,这里的人们不得不尝试翻译一些东西。 :) –

+0

g.doc.select('// h3 [@ class =“r”]/a')不是一个字符串...所以当您尝试打印时会导致错误... – kpie

回答

1

当您使用g.doc.submit()发送表格时,Grab会自动选择I'm Feeling Lucky按钮进行提交。

如果你想收到谷歌搜索的实际结果,你必须指定提交按钮

In [50]: g.go('https://www.google.com.ua/') 
Out[50]: <grab.document.Document at 0x7f2552014050> 

In [51]: g.doc.set_input("q","grab") 

In [52]: g.doc.submit(submit_name = 'btnK') 
Out[52]: <grab.document.Document at 0x7f2552014170> 

In [53]: g.doc.select('//head/title').text() 
Out[53]: u'grab - \u041f\u043e\u0448\u0443\u043a Google' 

In [54]: print g.doc.select('//head/title').text() 
grab - Пошук Google 

g.doc.select('//h3[@class="r"]/a')返回所有元素的列表,匹配您的XPath表达式。

In [59]: for el in g.doc.select('//h3[@class="r"]/a'): 
    ....:  print el.text() 
    ....: 
Grab - python фреймворк для парсинга сайтов 
Grab — Викиучебник 
Grab | Define Grab at Dictionary.com 
Grab — Вікіпедія 
grab - Англо-русский словарь на WordReference.com 
Grab — python библиотека для парсинга сайтов ... 
grab - definition of grab by The Free Dictionary 
lorien/grab · GitHub 
grab 0.6.5 : Python Package Index 

如果您只需要在第一个结果,你可以使用

g.doc.select('//h3[@class="r"]/a')[0] 
+0

非常感谢您许多!!!!!!!!!!!!!! –