Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # coding=utf-8
- from modules.engine import engine
- from pyquery import PyQuery as pq
- import re, random, urllib, ConfigParser, time, datetime
- config_file = "/home/parser/checker/config.ini"
- config = ConfigParser.ConfigParser()
- config.read(config_file)
- class google(engine):
- def __init__(self):
- pass
- def make_req(self, e, q): #принимается движок и keyword
- #words = q.split(' ')
- #s = 'intext:"%s" (intitle:"%s" AND intext:"%s")' % (e.searchString(), q, q)
- s = 'intext:"%s" %s' % (e.searchString(), q)
- #if words and len(words) > 3 :
- # s = 'intext:"%s"' % e.searchString() + " AND ".join(['intitle:"%s" AND intext:"%s"' % (w,w) for w in words])
- return s
- def parse(self, q):
- #print "google engine started parsing!", q
- forbidden_sites = config.get('search', 'forbidden_sites').split(", ")
- max_pages = config.getint('search', 'max_pages')
- page_src = False
- results_url = "http://www.google.com/search?tbs=sbd:1,qdr:y&hl=en&q=%s&num=%d "
- for i in range(5): #Пытаемся 5 раз загрузить страничку
- onpage_count = random.randint(41,59)
- try:
- #составляется урл для запроса к гуглу, с рандомным количеством результатов на странице (41-59)
- url = results_url % (urllib.quote(q), onpage_count)
- except:
- print "cant build search link...breaking..."
- break
- page_src = self.loadPage(url) #загружаем хтмл по ссылке
- if not page_src :
- print "search engine cant load page by builded url:", url
- break
- else:
- pass
- #results_url += "&"
- time.sleep(1)
- results_links = []
- if page_src :
- print "parsing loaded page for links..."
- d = pq(page_src) #pq это библиотечка, вроде jQuery
- results_links = [d(el).attr("href") for el in d("a.l")] #получаем список ссылок из результатов запроса к поисковику
- print " < first page"
- ''' #пока отключен парсинг дополнительных страниц выдачи
- for l in [d(el).attr("href") for el in d("#nav a")][:max_pages]: #получаем ссылки на остальные страницы выдачи
- for j in range(5):
- page_src = self.loadPage("http://www.google.com" + l) #загружаем остальные страницы выдачи
- if page_src :
- _d = pq(page_src)
- for el in _d("a.l") :
- results_links.append(_d(el).attr("href")) #добавляем ссылки с других страниц
- break
- else:
- l += "&"
- print " < next page"
- '''
- print " <<< parsed : " , len(results_links)
- results_links = [elem for elem in results_links if not any([i in elem for i in forbidden_sites])]
- #неведомое шаманство. видимо, исключает из списка полученных из выдачи ссылок forbidden_sites
- print " <<< filtered : " , len(results_links)
- return results_links
- @classmethod
- def getHost(self):
- return 'google.com'
- def searchString(self):
- return 'google.com'
- def searchLinks(self, page):
- return ""
- def parseInfo(self, page):
- return ""
Advertisement
Add Comment
Please, Sign In to add comment