我如何使用Grab进行Google搜索

时间:2015-04-20 04:30:39

标签: python

早上好! 我学习Python和库Grab。 我希望使用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>

首先'打印'必须写“抓 - ПошукGoogle”,不是吗?但它显示结果,必须写第二个'print'。 为什么会这样?

1 个答案:

答案 0 :(得分:1)

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

如果您想接收Google搜索的实际结果,则必须指定提交按钮

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]