Mike_King

[Python] Google ver. 2.0

Nov 10th, 2012
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.89 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import requests
  3. import re
  4.  
  5. http = requests.Session()
  6. http.headers = {'User-Agent': 'Opera/9.80 (J2ME/MIDP; Opera Mini/9.80 (J2ME/23.377; U; en) Presto/2.5.25 Version/10.54'}
  7.  
  8.  
  9. def query(q, page=0):
  10.     """ Поиск ссылок """
  11.     url = u'http://google.com/search?hl=en&btnG=Search&q=%s&start=%s' % (q, page * 10)
  12.     response = http.get(url)
  13.  
  14.     found = reg(response.text, '<a href="/url\?q=(.*?)&amp;.*?>(.*?)</a>')
  15.     goo = []
  16.  
  17.     for i in found:
  18.         goo += [{
  19.             'url': i[0],
  20.             'name': clear_html_tags(i[1]),
  21.             }]
  22.  
  23.     return goo
  24.  
  25.  
  26. def images(q, page=0):
  27.     """ Поиск картинок """
  28.     url = u'http://google.com/search?hl=en&prmd=ivns&source=lnms&tbm=isch&sa=X&q=%s&start=%s' % (q, page * 10)
  29.     response = http.get(url)
  30.  
  31.     found = reg(response.text, '<a class="image" href="/imgres\?imgurl=(.*?)&amp;.*?h=(.*?)&amp;w=(.*?)&amp;')
  32.     goo = []
  33.  
  34.     for i in found:
  35.         goo += [{
  36.             'url': i[0],
  37.             'height': int(i[1]),
  38.             'wight': int(i[2]),
  39.             }]
  40.  
  41.     return goo
  42.  
  43.  
  44. def pages(f, q, pages=1):
  45.     """ Получение нескольких страниц. Пример: google.pages(google.images, 'kyubey', 3) """
  46.     goo = []
  47.     for i in xrange(pages):
  48.         response = f(q, page=i * 10)
  49.         if response:
  50.             goo += response
  51.         else:
  52.             break
  53.  
  54.     return goo
  55.  
  56.  
  57. def reg(string, reg):
  58.     """ Поиск по регулярке """
  59.  
  60.     reg = re.compile(reg, re.IGNORECASE | re.DOTALL)
  61.     reg = reg.findall(string)
  62.     return reg
  63.  
  64.  
  65. def clear_html_tags(text):
  66.     tags_regs = [r'<([a-z])>', r'</([a-z])>']
  67.  
  68.     for i in tags_regs:
  69.         text = re.sub(i, '', text)
  70.  
  71.     return text
  72.  
  73. if __name__ == '__main__':
  74.     goo = query("Python")
  75.     for i in goo:
  76.         print '%s - %s' % (i['url'], i['name'])
Advertisement
Add Comment
Please, Sign In to add comment